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