목적 - 실제로는 초인종 앱을 만들고 있는데, 버튼을 두드리면 앱이 울립니다 (작은 오디오 재생) & 사용자가 보유 할 때까지 앱 레코드 오디오를 보유하고 있습니다. 그것. 내 목표 - 사용자가 버튼을 눌렀을 때 녹음을 시작합니다. &은 사용자가 버튼을 놓을 때 멈 춥니 다.버튼을 눌러 안드로이드 앱에 오디오 녹음하기
public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = "AudioRecordTest";
private Button ring,record;
private String outputfile = null;
private MediaRecorder rec = null;
private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
// Requesting permission to RECORD_AUDIO
private boolean permissionToRecordAccepted = false;
private String [] permissions = {Manifest.permission.RECORD_AUDIO};
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case REQUEST_RECORD_AUDIO_PERMISSION:
permissionToRecordAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
break;
}
if (!permissionToRecordAccepted) finish();
}
private void startrec()
{
Log.e(LOG_TAG, "startRecording:Calling ");
rec = new MediaRecorder();
rec.setAudioSource(MediaRecorder.AudioSource.MIC);
rec.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
rec.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
outputfile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/rec.amr";
rec.setOutputFile(outputfile);
try {
rec.prepare();
rec.start();
} catch (IOException ioe2) {
}
Toast.makeText(MainActivity.this, "RECORDING STARTED", Toast.LENGTH_SHORT).show();
}
private void stoprec(){
rec.stop();rec.release();
Toast.makeText(MainActivity.this, "RECORDING STOPPED", Toast.LENGTH_SHORT).show();
Log.e(LOG_TAG, "stopRecording:Calling ");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ring = findViewById(R.id.ringbutton);
record =findViewById(R.id.recordbutton);
ring.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v1) {
try {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
} catch (IllegalStateException ise) {}
}
});
record.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v2, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) startrec();
else if (event.getAction() == MotionEvent.ACTION_UP) stoprec();
return true;}
});
}
} u는이 말할 PLS 할 수있는 더 좋은 방법을 알고있는 경우 녹화 버튼
접촉에
Problem- 응용 프로그램이 충돌합니다.
ontouchlistener를 사용하여 코드를 편집했지만 여전히 작동하지 않습니다. – Sholi