suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Android überwacht das Ein- und Ausstecken von Kopfhörern, ohne die APP öffnen zu müssen

Jetzt ist die Nachfrage da. Überwachen Sie das Ein- und Ausstecken von Kopfhörern nach dem Einschalten des Telefons oder ohne Öffnen der App. um verschiedene Operationen durchzuführen.
Die aktuelle Denkweise ist.
Starten Sie nach dem Booten einen Dienst und überwachen Sie den Ein- und Aussteckstatus der Kopfhörer im Dienst. Wenn Kopfhörer angeschlossen sind, öffnen Sie eine Aktivität. Andernfalls schließen Sie die aktuelle Aktivität.
Stimmt an der ganzen Idee etwas nicht??

漂亮男人漂亮男人2750 Tage vor1126

Antworte allen(2)Ich werde antworten

  • 扔个三星炸死你

    扔个三星炸死你2017-06-24 09:44:57

    问题就是service进程如何存活

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-06-24 09:44:57

    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);
                }
            }
        }
    };
    

    }

    Antwort
    0
  • StornierenAntwort