Android Media Recording с использованием потоков

Я занимаюсь разработкой приложения для Android, которое просто запускает и останавливает запись с помощью кнопок. Я использовал темы. Я создал три класса .. Один для начала записи ... один для остановки записи и основной класс ..

Проблема в том, что я вижу файл на своем мобильном телефоне, но он пуст, а мобильный дает мне сообщение "Невозможно воспроизвести видео " .. Я хочу, чтобы он работал с потоками .. Я не хочу, чтобы другие методы ..

Это мой код Основной класс:

public class MediaRecorderSampleActivity extends Activity {


    Button start;
    Button stop ; 
    private MediaRecorder recorder ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        start = (Button)findViewById(R.id.startbtn); 
        stop = (Button)findViewById(R.id.stopbtn); 
        start.setOnClickListener(new btnClick());
        stop.setOnClickListener(new StopbtnClick());
        }



    class btnClick implements View.OnClickListener {
                public void onClick(View arg0) {
            Log.i("Media", "Start Clicked...");
            Thread startThread = new Thread ( new startRe (recorder));
            Log.i("Media", "start Thread Created");
            startThread.start() ; 
             Log.i("Media", "start Recording");

                }           
    }


    class StopbtnClick implements View.OnClickListener {
        public void onClick(View arg0) {
              Log.i("Media", "Stop Clicked...");
        // TODO Auto-generated method stub
            Thread stopThread = new Thread ( new stopRecording (recorder));
              Log.i("Media", "stop Thread Created");
    stopThread.start();
    Log.i("Media", "stop Recording");
        }

  }

      }

Класс StartRecording

public class startRe implements Runnable {
private MediaRecorder recorder;


startRe( MediaRecorder r ) {
    Log.i("Media", "start cons");
    this.recorder = r ; 

}
public void run() {
    // TODO Auto-generated method stub
    Log.i("Media", "IN RUN start Recording");
    startRecording();
}


public void startRecording() {
    Log.i("Media", "IN Method start Recording");
    recorder = new MediaRecorder();
    Log.i("Media", "create variable");
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    Log.i("Media", "1");
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    Log.i("Media", "2");
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    Log.i("Media", "3");
    recorder.setOutputFile(getFilePath());
    try{
        Log.i("Media", "prepar");
        recorder.prepare();
        Log.i("Media", "before");
        recorder.start();
        Log.i("Media", "after");
    }catch (Exception e){
        e.printStackTrace();
    }

}


private String getFilePath() {
    String filePath = Environment.getExternalStorageDirectory().getPath();
    File file = new File(filePath, "MediaRecorderSample");

    if(!file.exists())
        file.mkdirs();

    return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp4" );
}


}

СтопКласс

 public class stopRecording implements Runnable {
private MediaRecorder recorder ;

public stopRecording(MediaRecorder recorder2) {
    Log.i("Media", "Stop in Cos");
    // TODO Auto-generated constructor stub
    try {
    this.recorder = recorder2 ; }
    catch ( Exception e )
    {       
        Log.i("Media", "Stop out  Cos" + e.getMessage()) ;
        } 

}
public void run() {
    Log.i("Media", "Stop in RUN");
    stopRecording();
    Log.i("Media", "Stop out of RUN");

}

Ответы на вопрос(1)

Ваш ответ на вопрос