あり、完全なコードの音声記録があり、メモリに
public class AudioRecord extends AppCompatActivity
{
Button play, stop, record;
//private MediaRecorder myAudioRecorder;
//private String outputFile = null;
File audiofile = null;
//MediaRecorder recorder = null;
Uri fileUri = null;
Chronometer myChronometer;
private MediaRecorder mRecorder = null;
private static final String LOG_TAG = "AudioRecordTest";
//private static String mFileName = null;
private MediaPlayer mPlayer = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.record_audio);
myChronometer = (Chronometer) findViewById(R.id.chronometer);
play = (Button) findViewById(R.id.buttonPlay);
stop = (Button) findViewById(R.id.buttonStop);
record = (Button) findViewById(R.id.buttonRecord);
stop.setEnabled(false);
play.setEnabled(false);
long current = System.currentTimeMillis();
File sampleDir = Environment.getExternalStorageDirectory();
try {
audiofile = File.createTempFile("sound"+current, ".3gp", sampleDir);
} catch (IOException e) {
Log.e("AAA", "sdcard access error");
return;
}
record.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
myChronometer.start();
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(audiofile.getAbsolutePath());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try
{
mRecorder.prepare();
}
catch(IOException e)
{
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show();
}
});
stop.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mRecorder.stop();
mRecorder.release();
mRecorder = null;
stop.setEnabled(false);
play.setEnabled(true);
addRecordingToMediaLibrary();
Toast.makeText(getApplicationContext(), "Audio recorded successfully", Toast.LENGTH_LONG).show();
myChronometer.stop();
myChronometer.setBase(SystemClock.elapsedRealtime());
}
});
play.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) throws IllegalArgumentException, SecurityException, IllegalStateException
{
Intent data = new Intent();
// data.putExtra("result",mFileName);
data.setData(fileUri);
//data.setData(Uri.fromFile(new File(mFileName)));
setResult(RESULT_OK, data);
finish();
// startPlaying();
}
});
}
protected void addRecordingToMediaLibrary() {
ContentValues values = new ContentValues(4);
long current = System.currentTimeMillis();
values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current/1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");
values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());
ContentResolver contentResolver = getContentResolver();
Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri newUri = contentResolver.insert(base, values);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
M.L("Added File " + newUri);
//Toast.makeText(this, "Added File " + newUri, Toast.LENGTH_LONG).show();
fileUri=newUri;
}
// Record audio XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar"></include>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/imageView"
android:layout_alignParentTop="true"
android:background="#050505"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:drawableLeft="@drawable/mix_record"
android:gravity="center"
android:text=" Recoding... "
android:textColor="@color/white"
android:textSize="18sp"/>
<Chronometer
android:id="@+id/chronometer"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:textColor="@color/white"
android:textSize="60sp"
/>
</LinearLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout5"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#171A1D"
android:src="@drawable/a_microphone"/>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#9b9b9b"
android:gravity="center"
android:orientation="horizontal"
android:padding="16dp">
<Button
android:id="@+id/buttonRecord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginRight="7dp"
android:text="Record"/>
<Button
android:id="@+id/buttonStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/button"
android:layout_centerHorizontal="true"
android:text="Stop"/>
<Button
android:id="@+id/buttonPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/button2"
android:layout_marginLeft="7dp"
android:text="send"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
おかげで、ファイルを保存するが、それは私の質問に答えていませんでした。私は完全なコードがあることを知っていますが、私は何を求めているのですか?マイクを通して録音するのではなく、私の電話にオーディオを録音する方法があります。画面のアクティビティを記録し、ゲームプレイを画面に記録するなど。何か簡単に、電話で再生されているオーディオだけです。 –