Autore Topic: Acquisizione e Riproduzione Audio  (Letto 1426 volte)

Offline jocker99

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy mini 2
  • Sistema operativo:
    debian 6 - 64 bit
Acquisizione e Riproduzione Audio
« il: 14 Novembre 2011, 18:49:31 CET »
0
Salve ragazzi io ho questa strana situazione, dal libro di carli stavo testando l'esempio SimpleAudioRecording del capitolo13, come ho fatto con gl'altri dopo averlo importato ho cambiato i parametri presenti in androidmanifest e in defaul.propreties il valore di android da 5 a 10 (uso una AVD 2.3.3)
faccio presente che per gl'altri esempi non ho mai avuto problemi mentre ora una volta partito l'emulatore ho laregistrazione del suono (quindi le funzioni di start rec e stop rec) funzionano mentre start play e stop play mi generano un errore
posto prima il codice sorgente e poi il file logcat

Codice (Java): [Seleziona]
 

public class SimpleAudioRecordingActivity extends Activity {
        /*
         * Tag del Log
         */

        private final static String TAG_LOG = "SimpleAudioRecordingActivity";
        /*
         * Nome del file su cui andremo a scrivere il media acquisito
         */

        private final static String RECORDING_FILE_NAME = "/data/data/it.apogeo.android.cap13.simpleaudiorecording/RECORDED_AUDIO";    
        /*
         * Riferimento al MediaPlayer
         */

        private MediaPlayer mediaPlayer;
        /*
         * Riferimento al MediaRecorder
         */

        private MediaRecorder mediaRecorder;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
        }
       
        /**
         * Inizio della registrazione
         * @param button
         */

        public void startRec(View button){
                Log.i(TAG_LOG, "Start Recording..");
                if(mediaRecorder!=null){
                        // Se esiste ne liberiamo le risorse
                        mediaRecorder.release();
                        Log.i(TAG_LOG, "Se esiste ne liberiamo le risorse");
                }
                // Se esiste già un file lo cancelliamo
                File mediaFile = new File(RECORDING_FILE_NAME);
                if(mediaFile.exists()){
                        Log.i(TAG_LOG, "elimino il file già creato");
                        mediaFile.delete();
                }
                //else{    //else messo da te
                       
                //      Log.i(TAG_LOG, "creo il file amr_anb");
                // Inizializziamo il MediaRecorder per la registrazione
                mediaRecorder = new MediaRecorder();
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            mediaRecorder.setOutputFile(RECORDING_FILE_NAME);
            // Avviamo la registrazione
            try {
                Log.i(TAG_LOG, "creo il file amr_anb con il TRY");
                        mediaRecorder.prepare();
                    mediaRecorder.start();
                } catch (Exception e) {
                        e.printStackTrace();
                }
       
        //      }// fine else messo da te
       
        }
        /**
         * Fine della registrazione
         * @param button
         */

        public void stopRec(View button){
                Log.i(TAG_LOG, "Stop Recording..");
                if(mediaRecorder!=null){
                        // Se esiste lo fermiamo
                        mediaRecorder.stop();
                }
        }
        /**
         * Inizio della riproduzione del file salvato
         * @param button
         */

        public void startPlay(View button){
                Log.i(TAG_LOG, "Start Playing..");
                if(mediaPlayer!=null){
                        mediaPlayer.release();
                }
                mediaPlayer = new MediaPlayer();
            try {
                Log.i(TAG_LOG, "Parte il playing");
                        mediaPlayer.setDataSource(RECORDING_FILE_NAME);
                        mediaPlayer.prepare();
                        mediaPlayer.start();
                } catch (Exception e) {
                        e.printStackTrace();
                }              
        }
        /**
         * Fine della riproduzione del file salvato
         * @param button
         */

        public void stopPlay(View button){
                Log.i(TAG_LOG, "Stop Playing..");
                if(mediaPlayer!=null){
                        Log.i(TAG_LOG, "stop se non e' nullo");
                        // Se esiste lo fermiamo
                        mediaPlayer.stop();
                }              
        }      
}

di seguito il file di manifest
Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="it.apogeo.android.cap13.simpleaudiorecording"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SimpleAudioRecordingActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="10" />

<uses-permission android:name="android.permission.RECORD_AUDIO">
</uses-permission>
</manifest>

quando clicco su play rec e stop play in DDMS ho notato che il file RECORDED_AUDIO esiste ma ha permessi -rw-------
quando clicco su start paly e stop play ho questo



11-14 17:31:00.086: WARN/ActivityManager(61): finishReceiver called but no pending broadcasts
11-14 17:32:10.926: INFO/ARMAssembler(61): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x444ea520:0x444ea6d8] in 808063 ns
11-14 17:32:10.986: INFO/ARMAssembler(61): generated scanline__00000077:03515104_00001004_00000000 [ 65 ipp] (85 ins) at [0x444ea6e0:0x444ea834] in 502927 ns
11-14 17:32:11.076: INFO/ARMAssembler(61): generated scanline__00000177:03515104_00001001_00000000 [ 91 ipp] (114 ins) at [0x444ea838:0x444eaa00] in 476457 ns
11-14 17:32:13.257: INFO/InputReader(61): Device reconfigured: id=0x0, name=qwerty2, display size is now 480x800
11-14 17:32:13.257: INFO/InputManager-Callbacks(61): No virtual keys found for device qwerty2.
11-14 17:32:13.395: INFO/SimpleAudioRecordingActivity(340): Start Recording..
11-14 17:32:13.395: INFO/SimpleAudioRecordingActivity(340): elimino il file già creato
11-14 17:32:13.405: WARN/MediaProfiles(34): could not find media config xml file
11-14 17:32:13.415: INFO/SimpleAudioRecordingActivity(340): creo il file amr_anb con il TRY
11-14 17:32:13.435: INFO/MPEG4Writer(34): limits: 2147483647/0 bytes/us, bit rate: 12200 bps and the estimated moov size 3072 bytes
11-14 17:32:13.485: INFO/MPEG4Writer(34): setStartTimestampUs: 21974
11-14 17:32:13.485: INFO/MPEG4Writer(34): Earliest track starting time: 21974
11-14 17:32:20.166: INFO/SimpleAudioRecordingActivity(340): Stop Recording..
11-14 17:32:20.186: INFO/MPEG4Writer(34): Received total/0-length (679/0) buffers and encoded 679 frames. - audio
11-14 17:32:20.186: INFO/MPEG4Writer(34): Audio track drift time: 6820963 us
11-14 17:32:20.195: DEBUG/MPEG4Writer(34): 0 chunks are written in the last batch
11-14 17:32:22.127: INFO/SimpleAudioRecordingActivity(340): Start Playing..
11-14 17:32:22.136: INFO/SimpleAudioRecordingActivity(340): Parte il playing
11-14 17:32:22.136: INFO/StagefrightPlayer(34): setDataSource('/data/data/it.apogeo.android.cap13.simpleaudiorecording/RECORDED_AUDIO')
11-14 17:32:22.146: ERROR/MediaPlayer(340): error (1, -2147483648)
11-14 17:32:22.146: WARN/System.err(340): java.io.IOException: Prepare failed.: status=0x1
11-14 17:32:22.156: WARN/System.err(340):     at android.media.MediaPlayer.prepare(Native Method)
11-14 17:32:22.156: WARN/System.err(340):     at it.apogeo.android.cap13.simpleaudiorecording.SimpleAudioRecordingActivity.startPlay(SimpleAudioRecordingActivity.java:98)
11-14 17:32:22.156: WARN/System.err(340):     at java.lang.reflect.Method.invokeNative(Native Method)
11-14 17:32:22.156: WARN/System.err(340):     at java.lang.reflect.Method.invoke(Method.java:507)
11-14 17:32:22.166: WARN/System.err(340):     at android.view.View$1.onClick(View.java:2139)
11-14 17:32:22.166: WARN/System.err(340):     at android.view.View.performClick(View.java:2485)
11-14 17:32:22.166: WARN/System.err(340):     at android.view.View$PerformClick.run(View.java:9080)
11-14 17:32:22.166: WARN/System.err(340):     at android.os.Handler.handleCallback(Handler.java:587)
11-14 17:32:22.166: WARN/System.err(340):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-14 17:32:22.166: WARN/System.err(340):     at android.os.Looper.loop(Looper.java:123)
11-14 17:32:22.166: WARN/System.err(340):     at android.app.ActivityThread.main(ActivityThread.java:3683)
11-14 17:32:22.166: WARN/System.err(340):     at java.lang.reflect.Method.invokeNative(Native Method)
11-14 17:32:22.166: WARN/System.err(340):     at java.lang.reflect.Method.invoke(Method.java:507)
11-14 17:32:22.166: WARN/System.err(340):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-14 17:32:22.166: WARN/System.err(340):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-14 17:32:22.166: WARN/System.err(340):     at dalvik.system.NativeStart.main(Native Method)
11-14 17:32:28.535: INFO/SimpleAudioRecordingActivity(340): Stop Playing..
11-14 17:32:28.535: INFO/SimpleAudioRecordingActivity(340): stop se non e' nullo
11-14 17:32:28.535: ERROR/MediaPlayer(340): stop called in state 0
11-14 17:32:28.535: ERROR/MediaPlayer(340): error (-38, 0)
11-14 17:32:28.535: ERROR/MediaPlayer(340): Error (-38,0)





Offline jocker99

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy mini 2
  • Sistema operativo:
    debian 6 - 64 bit
Re:Acquisizione e Riproduzione Audio
« Risposta #1 il: 17 Novembre 2011, 19:55:43 CET »
0
dopo un po' di sbattimento ho capito che il problema, non solo dell'esempio del libro di carli e' dato da
Codice (Java): [Seleziona]
     
....
 mediaPlayer = new MediaPlayer();
            try {
                Log.i(TAG_LOG, "Parte il playing");
                        mediaPlayer.setDataSource(RECORDING_FILE_NAME);
....
in particolare dal fatto che RECORDING_FILE_NAME e' stato definito in questo modo
Codice (Java): [Seleziona]
 "/data/data/it.apogeo.android.cap13.simpleaudiorecording/RECORDED_AUDIO";il problema se metto un file mp3 nella cartella raw, che ho precedentemente creato, ascolto la musica ma se devo ascoltare il file da me registrato allora mi da sempre lo stesso problema, faccio notare che ho provanto anche con utilizzando l'URI per file presente in internet e funziona.......
non so' proprio cosa fare.....
HELP!!!!!