Heim > Fragen und Antworten > Hauptteil
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??
天蓬老师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);
}
}
}
};
}