目的 - 私は実際にボタンをタップするとアプリが鳴ります(小さなオーディオを再生します)&それ。 私の目標 - ユーザーがボタンを押したときに録音を開始します。&は、ユーザーがボタンを離したときに停止します。 uはこれを行うには良い方法は教えてPLSのを知っていれば、レコードボタンボタンを押してアンドロイドアプリにオーディオを録音する
に触れる上
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;}
});
}
}
Problem-アプリがクラッシュします。
ontouchlistenerでコードを編集しましたが、まだ動作していません – Sholi