안드로이드 개발 질문/답변
(글 수 45,052)
package min.Dandelion;
import java.io.File; import java.io.IOException;
import android.app.Activity; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Toast; import android.widget.VideoView;
public class video extends Activity {
/** Called when the activity is first created. */ private MediaRecorder mRecorder; private VideoView VideoView01; //private View VideoFrame; private boolean touchOn = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
//VideoFrame = (View)findViewById(R.id.VideoFrame); VideoView01 = (VideoView)findViewById(R.id.VideoView01); //VideoFrame.setOnTouchListener(videoTouchListener); VideoView01.requestFocus();
VideoView01.setVideoPath("/sdcard/testvideo.mp4");
VideoView01.setVideoPath("/sdcard/testvideo.mp4");
VideoView01.start();
VideoView01.postDelayed(new Runnable() {
public void run() {
VideoView01.pause();
Toast toast = Toast.makeText(getBaseContext(),
"터치하기",
Toast.LENGTH_LONG);
toast.show();
//터치
VideoView01.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if( touchOn == true ){
if( !VideoView01.isPlaying())
VideoView01.start();
VideoView01.postDelayed(new Runnable() {
public void run() {
VideoView01.pause();
Toast toast = Toast.makeText(getBaseContext(),
"마이크 불기",
Toast.LENGTH_LONG);
toast.show();
startRec();
mRecRunnable.run();
}
}, 14000);
touchOn=false;
}
else
;
return true;
}
});
}
}, 3000);
}
public void startRec() {
makeRecFile();
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(tmpFile.getAbsolutePath());
mRecorder.setMaxDuration( 30 * 1000);
// Handle IOException
try {
mRecorder.prepare();
} catch(IOException exception) {
Log.e("REC", "ERROR: Can't Prepare Recorder");
mRecorder.reset();
mRecorder.release();
mRecorder = null;
return;
}
mRecorder.start();
}
private File tmpFile;
private void makeRecFile()
{
String tmpFileName = "/sdcard/" + "tmp.amr";
tmpFile = new File( tmpFileName );
if( tmpFile.exists())
tmpFile.delete();
tmpFile = new File(tmpFileName);
Log.e("REC", "Tmp file: " + tmpFile.getAbsolutePath());
}
private Handler mRecHandler = new Handler();
private Runnable mRecRunnable = new Runnable() {
public void run() {
if( mRecorder != null )
{
int getAmp = mRecorder.getMaxAmplitude();
if( getAmp > 25000 ) {
Log.e("AMP", "AMP: " + getAmp );
if( VideoView01 != null )
VideoView01.start();
return;
}
}
mRecHandler.postDelayed(this, 1000);
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if( mRecorder != null ) {
mRecorder.reset();
mRecorder.release();
mRecorder = null;
}
if( VideoView01 != null ) {
VideoView01.pause();
VideoView01.stopPlayback();
VideoView01 = null;
}
if( tmpFile != null )
if( tmpFile.exists())
tmpFile.delete();
}
}
14초에서 영상이 멈춘 후에 마이크 입력값을 받으면 다시 영상이 재생되어야 하는데요,
단말기에서 실행해 본 결과, 14초에서 영상이 멈춘 상태로 마이크를 불어도 반응이 없습니다.
어느 부분에 문제가 있는 걸까요?



