首页 >社区问答列表 >android 不打开APP的情况下监听耳机插拔情况

android 不打开APP的情况下监听耳机插拔情况

现在的需求是。开机之后或者不打开App的情况下监听耳机的插拔情况。从而执行不同的操作。
现在的思路是。
开机启动一个service,在service中监听耳机插拔情况。如果耳机插入则打开一个Activity。否则关闭当前Activity。
整个思路是否有问题??

  • 天蓬老师
  • 天蓬老师    2017-06-24 09:44:571楼

    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() {
    }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("xxxx","service start");
    }
    
    @Override
    public 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);
    }
    
    @Override
    public 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);
                }
            }
        }
    };
    

    }

    +0添加回复

  • 回复