Thứ Tư, 26 tháng 12, 2018

Lập trình Android - Máy thu phát sóng

Bộ thu phát sóng chỉ đơn giản trả lời các tin nhắn quảng bá từ các ứng dụng khác hoặc từ chính hệ thống. Những thông điệp này đôi khi được gọi là sự kiện hoặc ý định. 

Ví dụ: các ứng dụng cũng có thể bắt đầu phát sóng để cho các ứng dụng khác biết rằng một số dữ liệu đã được tải xuống thiết bị và có sẵn để chúng sử dụng, vì vậy đây là máy thu phát sóng sẽ chặn giao tiếp này và sẽ bắt đầu hành động thích hợp.

Khóa học lập trình Android
Khóa học lập trình Android

Khóa học lập trình Android có hai bước quan trọng sau để làm cho BroadcastReceiver hoạt động cho các ý định được phát sóng của hệ thống

Tạo bộ thu phát sóng.


Đăng ký máy thu phát sóng

Có một bước bổ sung trong trường hợp bạn sẽ thực hiện ý định tùy chỉnh của mình thì bạn sẽ phải tạo và phát các ý định đó.

Tạo bộ thu phát sóng

Một máy thu quảng bá được triển khai như một lớp con của lớp BroadcastReceiver và ghi đè phương thức onReceive () trong đó mỗi thông báo được nhận dưới dạng tham số đối tượng Intent .
lớp công khai MyReceiver mở rộng BroadcastReceiver { @Override void công khai onReceive ( Ngữ cảnh bối cảnh , ý định ý định ) { Toast . makeText ( bối cảnh , "Đã phát hiện ý định." , Toast . LENGTH_LONG ). hiển thị (); } }     
   
      
        
   

Đăng ký máy thu phát sóng

Một ứng dụng lắng nghe ý định phát sóng cụ thể bằng cách đăng ký một máy thu quảng bá trong tệp AndroidManifest.xml . 

Hãy xem xét chúng tôi sẽ đăng ký MyReceiver cho sự kiện do hệ thống tạo ra ACTION_BOOT_COMPLETED được hệ thống kích hoạt sau khi hệ thống Android hoàn tất quy trình khởi động.
<application android: icon = "@ drawable / ic_launcher" android: nhãn = "@ string / app_name" android: theme = "@ style / AppTheme" > < receive android: name = "MyReceiver" >
   
   
    
    
   
      <aim-filter> <action android: name = "android.intent.action.BOOT_COMPLETED" > </ action> </ aim-filter>
          
         
      
   
   </ người nhận> </ ứng dụng>
Bây giờ, bất cứ khi nào thiết bị Android của bạn được khởi động, nó sẽ bị BroadcastReceiver MyReceiver chặn và logic được triển khai bên trong onReceive () sẽ được thực thi.

Có một số sự kiện được tạo bởi hệ thống được định nghĩa là các trường tĩnh cuối cùng trong lớp Intent . Bảng sau liệt kê một vài sự kiện hệ thống quan trọng.

Không.Sự kiện liên tục & Mô tả
1android.intent.action.BATTERY_CHANGED

Phát sóng dính có chứa trạng thái sạc, mức và thông tin khác về pin.
2android.intent.action.BATTERY_LOW
Cho biết tình trạng pin yếu trên thiết bị.
3android.intent.action.BATTERY_OKAY
Cho biết pin bây giờ đã ổn sau khi hết pin.
4android.intent.action.BOOT_COMPLETED
Điều này được phát một lần, sau khi hệ thống khởi động xong.
5android.intent.action.BUG_REPORT
Hiển thị hoạt động để báo cáo một lỗi.
6android.intent.action.CALL

Thực hiện cuộc gọi đến một người được chỉ định bởi dữ liệu.
7android.intent.action.CALL_BUTTON

Người dùng nhấn nút "gọi" để đến trình quay số hoặc giao diện người dùng thích hợp khác để thực hiện cuộc gọi.
số 8android.intent.action.DATE_CHANGED
Ngày đã thay đổi.
9android.intent.action.REBOOT

Có thiết bị khởi động lại.

Phát sóng ý định tùy chỉnh

Nếu bạn muốn ứng dụng của mình tự tạo và gửi các ý định tùy chỉnh thì bạn sẽ phải tạo và gửi các ý định đó bằng cách sử dụng phương thức sendBroadcast () bên trong lớp hoạt động của bạn. 

Nếu bạn sử dụng phương thức sendStickyBroadcast (Intent) , Intent bị dính , nghĩa là Ý định bạn đang gửi ở lại sau khi phát xong.
công trống broadcastIntent ( Xem xem ) { Ý định ý định = mới Ý định (); 
   ý định . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); 
   sendBroadcast ( ý định ); }  
     
Mục đích này com.tutorialspoint.CUSTOM_INTENT cũng có thể được đăng ký theo cách tương tự như chúng tôi đã lấy lại ý định của hệ thống.
<application android: icon = "@ drawable / ic_launcher" android: nhãn = "@ string / app_name" android: theme = "@ style / AppTheme" > < receive android: name = "MyReceiver" >
   
   
    
    
   
      < aim -filter> <action android: name = "com.tutorialspoint.CUSTOM_INTENT" > </ action> </ aim -filter>
          
         
      
   
   </ người nhận> </ ứng dụng>
Ví dụ này sẽ giải thích cho bạn cách tạo BroadcastReceiver để chặn ý định tùy chỉnh. Khi bạn đã quen với mục đích tùy chỉnh, sau đó bạn có thể lập trình ứng dụng của mình để chặn các ý định hệ thống được tạo.

Vì vậy, hãy làm theo các bước sau để sửa đổi Khóa học lập trình Android mà chúng tôi đã tạo trong chương Ví dụ Hello World

Bậc thangSự miêu tả
1Bạn sẽ sử dụng studio Android để tạo ứng dụng Android và đặt tên làỨng dụng của tôi theo gói com.example.tutorialspoint7.myapplicationnhư được giải thích trong chương Ví dụ Hello World .
2Sửa đổi tệp hoạt động chính MainActivity.java để thêm phương thứcBroadcastIntent () .
3Tạo một tệp java mới có tên MyReceiver.java trong góicom.example.tutorialspoint7.myapplication để xác định BroadcastReceiver.
4Một ứng dụng có thể xử lý một hoặc nhiều ý định tùy chỉnh và hệ thống mà không có bất kỳ hạn chế nào. Mọi ý định bạn muốn chặn phải được đăng ký trong tệp AndroidManifest.xml của bạn bằng cách sử dụng thẻ <receive ... />
5Sửa đổi nội dung mặc định của tệp res / layout / Activity_main.xml để bao gồm một nút để phát mục đích.
6Không cần phải sửa đổi tệp chuỗi, studio Android sẽ chăm sóc tệp string.xml.
7Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng.
Sau đây là nội dung của tệp hoạt động chính được sửa đổi MainActivity.java. Tập tin này có thể bao gồm từng phương pháp vòng đời cơ bản.

Chúng tôi đã thêm phương thức BroadcastIntent () để phát một ý định tùy chỉnh.
gói com . Ví dụ . hướng dẫn7 . ứng dụng của tôi ;

nhập Android . ứng dụng . Hoạt động ; nhập Android . nội dung . Ý định ; nhập Android . os . Gói ; nhập Android . xem . Xem ;




lớp công khai MainActivity mở rộng Hoạt động {     

   / ** Được gọi khi hoạt động đầu tiên được tạo. * / @Override
   
   
   công trống onCreate ( Bundle savedInstanceState ) { super . onCreate ( yetInstanceState ); 
      setContentView ( R . bố trí . activity_main ); }  
      
   


   // phát một ý định tùy chỉnh.
      
   công trống broadcastIntent ( Xem xem ) { Ý định ý định = mới Ý định (); 
      ý định . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); sendBroadcast ( ý định ); } } 
        
   

Sau đây là nội dung của MyReceiver.java

Sau đây sẽ là nội dung được sửa đổi của tệp AndroidManifest.xml . Ở đây chúng tôi đã thêm thẻ <receive ... /> để bao gồm dịch vụ của chúng tôi:

Sau đây sẽ là nội dung của tệp res / layout / Activity_main.xml để bao gồm một nút để phát mục đích tùy chỉnh của chúng tôi

Hãy thử chạy Hello World đã được sửa đổi của chúng tôi ! ứng dụng chúng tôi vừa sửa đổi.

Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường. Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.

Khóa học lập trình Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng

Bây giờ để phát mục đích tùy chỉnh của chúng tôi, hãy nhấp vào nút Broadcast Intent , điều này sẽ phát mục đích tùy chỉnh của chúng tôi "com.tutorialspoint. CUSTOM_INTENT" sẽ bị chặn bởi BroadcastReceiver đã đăng ký của chúng tôi, ví dụ như MyReceiver và theo logic đã triển khai của chúng tôi, một cái bánh mì nướng sẽ xuất hiện ở phía dưới của trình giả lập như sau

Bạn có thể thử triển khai BroadcastReceiver khác để chặn các ý định hệ thống được tạo như khởi động hệ thống, thay đổi ngày, pin yếu, v.v.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Android - RenderScript

Trong chương này, chúng ta sẽ tìm hiểu về Android RenderScript. Thông thường các ứng dụng trên Android được thiết kế để tiêu thụ tài nguyên ...