馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
要注意的是 BroadcastReceiver 使用靜態註冊在 AndroidManifest.xml 可能會無效,
所以要像以下程式使用動態寫入註冊才可以,離開APP時,要註銷廣播程式...
HeadSetActivity.java 內容 (主畫面 Java檔)
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
public class HeadSetActivity extends Activity {
HeadsetPlugReceiver headsetPlugReceiver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerHeadsetPlugReceiver();
}
private void registerHeadsetPlugReceiver(){
headsetPlugReceiver = new HeadsetPlugReceiver ();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(headsetPlugReceiver, filter);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver();
}
private void unregisterReceiver(){
this.unregisterReceiver(headsetPlugReceiver);
}
}
HeadsetPlugReceiver.java 內容
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class HeadsetPlugReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.hasExtra("state")){
if(intent.getIntExtra("state", 0)==0){
Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();
}
else if(intent.getIntExtra("state", 0)==1){
Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();
}
}
}
} |