導航:首頁 > 操作系統 > android系統廣播事件

android系統廣播事件

發布時間:2023-07-26 13:39:23

① 12、注冊廣播有幾種方式,這些方式有何優缺點請談談android引入廣播機制的用意。

  1. 注冊廣播的分類:靜態注冊和動態注冊。

    靜態注冊:在清單文件里直接注冊,從app開啟到app銷毀,一直在接收廣播,接收廣播時間長,但是接收廣播的優先順序低於動態注冊廣播。

    動態注冊:動態注冊,動態銷毀,從onCreate到取消注冊,期間接收廣播,接收廣播時間是短且可控,接收廣播的優先順序高。例如:

    發送廣播:
    Intent i = new Intent();
    i.setAction("ACTION_CLOSE");
    sendBroadcast(i);

    接受廣播:
    onCreate(){

    //注冊廣播的接受者
    IntentFilter filter = new IntentFilter();
    filter.addAction("ACTION_CLOSE_ACTIVITY");
    receiver = new InnerReceiver();
    registerReceiver(receiver, filter);
    }

    private class InnerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //TODO 當前Activity接收到廣播 需要做的事情
    }
    }
    }

    //注銷廣播

    @Override
    protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
    }


2.引入廣播的原因:

a) 不同的app之間傳信通用

b)發出一條指定,需要多個Activity都需要有反應


注意:以上僅供參考,如有疑問,請追問,謝謝。

② 簡述在android中如何發送廣播消息

1.發送廣播
Intent intent = new Intent(BroadcastAction);
Bundle bundle = new Bundle();
bundle.putString("***", SUCCESS);
bundle.putString("FullPathName", mFullPathName);
intent.putExtras(bundle);
sendBroadcast(intent);
2.在Activity中創建一個內部類MyBroadcastReceiver擴展BroadcastReceiver,並在其中實現onReceive方法。
3.在Activity中聲明一個MyBroadcastReceiver類型的成員變數,並注冊:
private MyBroadcastReceiver myBroadcastReceiver;
...
myBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(BroadcastAction);
registerReceiver(receiver, filter);
4.使用完後要記得釋放
unregisterReceiver(receiver);

註:1和2中的 BroadcastAction要是同一個Action

③ android的混合開發 JS頁面能接收廣播嗎 在網頁接收不到藍牙按鍵的事件和廣播

不是手機的問題,耳機的問題。
藍牙耳機不止一種,我所知的一種是a2dp的一種不是a2dp的,a2dp的耳機就是可以聽歌的,另外一種不能聽歌
對於a2dp的耳機,如果短按一次hook鍵,系統會當作一個keyevent來處理,走的是發送廣播的流程。如果短按多次,或者長按一次hook 鍵,不會有keyevent,會當作一個類似與「BVRA」的AP命令來處理,處理過程可以參考源碼的BluetoothHandsfree.java, 這個時候就收不到廣播。
而對於不是a2dp的耳機,無論怎樣按按鍵,都是發送ap命令,不會收到keyevent。
解決方法有兩個,一是換個耳機,二是改rom,在藍牙bsp那部分,無論什麼耳機都走keyevent的流程

④ android service的監聽前台點擊事件怎麼寫

  1. 第一種辦法是廣播,一般來說系統對於音量鍵和Home鍵會發送廣播,我們可以再廣播中監聽這些按鍵信息。具體的IntentFilter怎麼寫,大家可以網路一下。

  2. 第二種辦法仍然是廣播,不過這就需要修改SDK了,在WindManagerService裡面,分發按鍵事件的時候的發送特殊的廣播的,這個改動可能比較麻煩。

  3. 第三種辦法是直接讀取輸入設備文件,一般該文件位於/dev/input/文件夾下面,不過裡面一般有多個文件,具體哪個文件描述的哪一個輸入設備,需要大家進行嘗試。設備的文件的讀取需要使用c或者c++來完成。具體的實現代碼可以參考:https://github.com/radhoo/android-event-injector。這種辦法需要有root許可權才行,而且讀取的鍵值是沒有做過轉換的,也就是說和我們平常使用的鍵值是不一樣的。其實大家可以在adb shell中,通過getevent查看。

  4. 第四種辦法是使用系統的無障礙服務,也就是AccessibilityService。我最終採用的方式就是這個,因為這個不僅可以監聽按鍵,還能攔截。關於AccessibilityService的實現,網上講的比較多了。我這里只提幾個需要注意的點:

閱讀全文

與android系統廣播事件相關的資料

熱點內容
怎麼把微信抖音加密 瀏覽:302
android滑動進度條 瀏覽:834
javagmt轉換 瀏覽:826
linux查看snmp 瀏覽:24
ug80車床編程 瀏覽:516
怎麼加速python計算素數 瀏覽:241
腰椎第五節壓縮性骨折 瀏覽:91
程序員開會的句子 瀏覽:993
用哪個app寫編程 瀏覽:645
android通訊錄增刪改查 瀏覽:731
車貸解壓過戶可以同時進行嗎 瀏覽:921
java面向對象編程題目 瀏覽:884
二次元壓縮包 瀏覽:701
stc模擬器編程器 瀏覽:156
伺服器銷售怎麼做好 瀏覽:89
什麼是com編程 瀏覽:850
演算法工程師最新資訊 瀏覽:613
郵政銀行卡怎麼在app簽約綁定 瀏覽:51
壓縮卷一直轉 瀏覽:978
初一編程小程序怎麼做 瀏覽:828