中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android實(shí)現(xiàn)廣播監(jiān)聽HOME鍵操作

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

先寫了個(gè)Service,在服務(wù)中通過廣播來監(jiān)聽HOME鍵操作:

public class HomeService extends Service{
private MonitoHomeReceiver mHomeBroadcastReceiver;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mHomeBroadcastReceiver = new MonitoHomeReceiver();
/**
* Android對(duì)屏幕下方常用按鍵消息處理是不一致的:
* 1、搜索按鍵的消息在onKeyDown或者onKeyUp中接收;
* 2、菜單按鍵的消息在onCreateOptionsMenu、onKeyDown或onKeyUp方法中接收;
* 3、返回按鍵的消息可以在onBackPressed、onKeyDown或onKeyUp方法中接收。
* 對(duì)于Home按鍵消息的處理,既不能通過onKeyDown、onKeyUp接收到,android也沒有提供專有的方法接收按鍵消息
* 但辦法總是有的,點(diǎn)擊Home按鍵時(shí)都會(huì)發(fā)出一個(gè)action為Intent.ACTION_CLOSE_SYSTEM_DIALOGS的廣播,通過注冊(cè)它來監(jiān)聽Home按鍵消息
*/
IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(mHomeBroadcastReceiver, homeFilter);
}
public class MonitoHomeReceiver extends BroadcastReceiver{
final String HOME_DIALOG_REASON = "homereason";
final String HOME_DIALOG_REASON_HOME = "homekey";


@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(HOME_DIALOG_REASON);
if (reason != null && reason.equals(HOME_DIALOG_REASON_HOME)) {
Toast.makeText(getApplicationContext(), "點(diǎn)擊Home鍵", Toast.LENGTH_SHORT).show();
return;
}
}
}


}

@Override
public void onDestroy() {
unregisterReceiver(mHomeBroadcastReceiver);
mHomeBroadcastReceiver = null;
super.onDestroy();
}
}

然后在Activity中啟動(dòng)Service:


public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**按鈕點(diǎn)擊事件*/
findViewById(R.id.test_home_btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,HomeService.class);
startService(intent);
}
});
}
}

最后就是個(gè)簡單的布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/test_home_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="測(cè)試Home鍵" />

</LinearLayout>

最后不要忘記在AndroidManifest.xml中用<Service></Service>標(biāo)簽注冊(cè)HomeService 服務(wù)。

標(biāo)簽: 搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:python中系統(tǒng)信息獲取psutil使用

下一篇:進(jìn)程監(jiān)控的python腳本