studio programacion para móviles libro edición desarrollo curso aplicaciones java android audio mp3

java - para - manual de programacion android pdf



raw no se puede resolver o no es un campo (3)

Estoy construyendo un reproductor de MP3 en mi aplicación y aparece un error que dice "raw no se puede resolver o no es un campo" en la línea: mMediaPlayer = MediaPlayer.create (this, R.raw.test_cbr);

No estoy seguro de qué es R.raw.test_cbr (no escribí este código) ¿alguien puede explicar qué es R.raw.test_cbr y cómo se puede resolver?

JAVA:

import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import com.idg.omv.R; public class MediaPlayerDemo extends Activity { private static final String TAG = "MediaPlayerDemo"; private MediaPlayer mMediaPlayer; private static final String MEDIA = "media"; private static final int LOCAL_AUDIO = 1; private static final int STREAM_AUDIO = 2; private static final int RESOURCES_AUDIO = 3; private static final int LOCAL_VIDEO = 4; private static final int STREAM_VIDEO = 5; private String path; private TextView tx; public void onCreate(Bundle icicle) { super.onCreate(icicle); tx = new TextView(this); setContentView(tx); Bundle extras = getIntent().getExtras(); playAudio(extras.getInt(MEDIA)); } private void playAudio(Integer media) { try { switch (media) { case LOCAL_AUDIO: /** * TODO: Set the path variable to a local audio file path. */ path = ""; if (path == "") { // Tell the user to provide an audio file URL. Toast .makeText( MediaPlayerDemo.this, "Please edit MediaPlayer_Audio Activity, " + "and set the path variable to your audio file path." + " Your audio file must be stored on sdcard.", Toast.LENGTH_LONG).show(); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(path); mMediaPlayer.prepare(); mMediaPlayer.start(); break; case RESOURCES_AUDIO: /** * TODO: Upload a audio file to res/raw folder and provide * its resid in MediaPlayer.create() method. */ mMediaPlayer = MediaPlayer.create(this, R.raw.test_cbr); mMediaPlayer.start(); } tx.setText("Playing audio..."); } catch (Exception e) { Log.e(TAG, "error: " + e.getMessage(), e); } } @Override protected void onDestroy() { super.onDestroy(); // TODO Auto-generated method stub if (mMediaPlayer != null) { mMediaPlayer.release(); mMediaPlayer = null; } } }


No estoy seguro de qué es R.raw.test_cbr (no escribí este código) ¿alguien puede explicar qué es R.raw.test_cbr y cómo se puede resolver?

R.raw refiere a los recursos "en bruto" colocados en res/raw . "Crudo" significa que el archivo de recursos está incluido en el paquete de la aplicación tal cual, sin modificaciones de tiempo de compilación.

(En teoría al menos. He tenido problemas donde la cadena de herramientas modificó mis recursos en bruto, pero eso está más allá del alcance de esta pregunta).

Obtiene este error de tiempo de compilación porque no tiene la carpeta res/raw y la clase anidada R.raw no se genera en R.java .

R.raw.test_cbr refiere a un archivo test_cbr.ext en la carpeta res/raw , donde ext es solo una extensión de archivo.

Dado que está alimentando MediaPlayer , debe colocar algún archivo de audio test_cbr por ejemplo, text_cbr.mp3 en res/raw y reconstruir su aplicación.


Cuando me enfrenté al problema, hubo otro problema. El nombre del recurso debe contener solo letras minúsculas. Si no, cualquier referencia a R causa un problema. También la extensión es obligatoria


La carpeta sin procesar va dentro de la carpeta res de su proyecto Android. Onces dentro / res, puedes encontrarlo a través de R.raw