Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 录制音频时控制服务_Android_Android Service_Audio Recording - Fatal编程技术网

Android 录制音频时控制服务

Android 录制音频时控制服务,android,android-service,audio-recording,Android,Android Service,Audio Recording,我想启动服务并录制音频,然后关闭活动,但继续录制,然后打开活动并停止录制 这是我的服务: public class RecorderService extends Service { private Thread mThread; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public int onSta

我想启动服务并录制音频,然后关闭活动,但继续录制,然后打开活动并停止录制

这是我的服务:

public class RecorderService extends Service {

private Thread mThread;

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    mThread = new Thread(new Runnable() {
        @Override
        public void run() {
            startRecording();
        }
    });
    mThread.start();
    return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    mThread = null;
    super.onDestroy();
}
}
这是我启动和停止服务的代码:

 Button recordAudioButton = (Button) findViewById(R.id.recordAudioButton);
    recordAudioButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            startService(new Intent(getApplicationContext(), RecorderService.class));

        }
    });

    Button buttonPLay = (Button) findViewById(R.id.buttonPLay);
    buttonPLay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            stopService(new Intent(getApplicationContext(), RecorderService.class));

        }
    });

它会启动,但当我停止服务时,它不会停止。我做错了什么?

问题是,尽管设置了
mThread=null您还需要先停止它

有关停止线程的详细信息,请参阅

例如,请尝试将
onstart命令
onDestory
更改为:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    mThread = new Thread(new Runnable() {
        @Override
        public void run() {
            if (Thread.currentThread().isInterrupted()) {
                return;
            }

            startRecording();
        }
    });
    mThread.start();
    return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    mThread.interrupt();
    mThread = null;
    super.onDestroy();
}

您如何理解服务没有停止?检查
如果(Thread.currentThread().isInterrupted())
-在代码的位置几乎毫无意义