我想要一个服务,看看是否连接了耳机。如果他们已经连接,那么做一些事情&断开连接时做别的事。我希望服务或线程能够运行,直到通过按下它的活动上的停止按钮显式停止它。
这是我的onStartCommand()
代码&我想要运行的代码是函数theRun()
。
public class MyService extends Service {
private final static String Headset_Flag = "android.intent.action.ACTION_HEADSET_PLUG";
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "Service onStartCommand " + startId);
theRun tR= new theRun();
tR.start();
return super.onStartCommand(intent, flags, startId);
}
private class theRun extends Thread
{
Runnable r = new Runnable() {
public void run() {
// Log.i(TAG, "Service In Run " + currentId);
try {
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (AudioManager.ACTION_HEADSET_PLUG.equals(Headset_Flag)) {
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Log.i(TAG, "Silent mode" + am.getRingerMode());
break;
case AudioManager.RINGER_MODE_VIBRATE:
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Log.i(TAG, "Vibrate mode");
break;
case AudioManager.RINGER_MODE_NORMAL:
Log.i(TAG, "Normal mode");
break;
}
}
}
catch(Exception e){
String msg = e.getMessage();
msg.toString();
}
}
};
}
如果我在那里插入我的代码,该服务只会在onStartCommand()
上执行一次。但是如何运行服务或线程,直到它被Activity明确停止?请指导我。
答案 0 :(得分:0)
在 onStartCommand 方法中返回 START_STICKY 执行此操作
试试这个
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("LocalService", "Received start id " + startId + ": " + intent);
theRun tR= new theRun();
tR.start();
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
参考this