l'enregistrement et l'enregistrement audio sur Android
Je suis en développement android (2.2) app pour enregistrer de l'audio. Le code semble fonctionner correctement et même enregistre les fichiers sur la Carte SD, mais quand je l'ai essayer et lire des fichiers audio sur mon Mac, rien ne se passe. Presque comme les fichiers sont vides. J'ai essayé de les enregistrer en tant que .mp3 et .wav mais pas de chance. Mon code est ci-dessous:
import java.io.File;
import java.io.IOException;
import android.media.MediaRecorder;
import android.os.Environment;
public class AudioRecorder {
private MediaRecorder recorder = new MediaRecorder();
private File outfile = null;
public AudioRecorder(){}
public void startRecording(String audioFile) throws IOException {
String state = android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
throw new IOException("SD Card is not mounted. It is " + state + ".");
}
//make sure the directory we plan to store the recording in exists
File directory = new File(path).getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
throw new IOException("Path to file could not be created.");
}
try{
File storageDir = new File(Environment
.getExternalStorageDirectory(), "/audio/");
storageDir.mkdir();
outfile=File.createTempFile(audioFile, ".wav",storageDir);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(outfile.getAbsolutePath());
}catch(IOException e){
e.printStackTrace();
}
try{
recorder.prepare();
}catch(IllegalStateException e){
e.printStackTrace();
}
recorder.start();
}
public void stop() throws IOException {
recorder.stop();
recorder.release();
}
}
Mon Activité:
/**
* Recording Activity
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import com.seekika.android.app.helpers.AudioRecorder;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
public class Record extends Activity {
private static final String TAG="RecordActivity";
private int SETTINGS=Menu.FIRST;
private int LOGOUT=Menu.FIRST + 1;
private int EXIT=Menu.FIRST + 2;
//components
private Button mBtnStartRecording;
private Button mBtnStopRecording;
private Chronometer mChronometer;
private String audioFileName="";
final AudioRecorder recorder = new AudioRecorder();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordstory);
initComponents();
}
public void initComponents(){
mChronometer=(Chronometer)findViewById(R.id.chrono);
mBtnStopRecording=(Button)findViewById(R.id.btn_stop_recording);
mBtnStopRecording.setEnabled(false);
mBtnStopRecording.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//stop timer
stopRecording();
//stop recording and save audio file to SD card
}
});
mBtnStartRecording=(Button)findViewById(R.id.btn_start_recording);
mBtnStartRecording.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startRecording();
mBtnStartRecording.setEnabled(false);
mBtnStopRecording.setEnabled(true);
//start recording audio
//start timer
}
});
}
private void startRecording(){
mChronometer.setBase(SystemClock.elapsedRealtime());
mChronometer.start();
try{
String myRecording="Seekika-" + System.currentTimeMillis();
Log.i(TAG, "Start Recording");
recorder.startRecording(myRecording);
}catch(IOException e){
Log.e(TAG,"IOException error");
e.printStackTrace();
}
}
private void stopRecording(){
mChronometer.stop();
try{
recorder.stop();
}catch(IOException e){
e.printStackTrace();
}
}
}
OriginalL'auteur jwesonga | 2011-05-07
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si vous pouvez l'utiliser, mais cela fonctionne pour moi:
Yep, enregistreur.setOutputSource(MediaRacorder.Outputformat."MPEG_4);
Je pense que tu veux dire enregistreur.setOutputFormat(MediaRacorder.Outputformat."MPEG_4)) 🙂
Je*suis assez sûr que je n'ai pas! 🙂
Rappelez-vous au sujet de "<uses-permission android:name="android.la permission.RECORD_AUDIO" />" dans manifest.xml
OriginalL'auteur CornflakesDK
Cela signifie que vous voulez créer (enregistrement) d'un fichier avec OUTPUTFORMAT comme RAW_AMR
Mais de simplement fournir un chemin d'accès au fichier avec un nom de fichier comme
.mp3
je suppose que ne serait pas le faire. Et que pourrait être le problème.Vérifier les détails des éléments de créer (appuyez longuement sur le fichier et cliquez sur détails), il donne des informations sur le fichier, comme les fenêtres de droite, cliquez sur propriétés.
OriginalL'auteur Hari BR