问题描述
现在的需求是。开机之后或者不打开App的情况下监听耳机的插拔情况。从而执行不同的操作。现在的思路是。开机启动一个service,在service中监听耳机插拔情况。如果耳机插入则打开一个Activity。否则关闭当前Activity。整个思路是否有问题??
问题解答
回答1:问题就是service进程如何存活
回答2:import android.app.ActivityManager;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.util.Log;
import java.util.List;
public class HeadPhoneService extends Service {
public HeadPhoneService() {}@Overridepublic IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException('Not yet implemented');}@Overridepublic void onCreate() { super.onCreate(); Log.e('xxxx','service start');}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_HEADSET_PLUG); registerReceiver(headsetReceiver, intentFilter); return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() { Intent service = new Intent(this, HeadPhoneService.class); this.startService(service); super.onDestroy();}private BroadcastReceiver headsetReceiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {String action = intent.getAction();if (Intent.ACTION_HEADSET_PLUG.equals(action)) { Log.e('xxxx','headsetchange'); if (intent.hasExtra('state')) {int state = intent.getIntExtra('state', 0);if (state == 1) {} else if(state == 0){}Log.e('xxxx','headphone'+state); }} }};
}