我正在构建一个MP3播放器到我的应用程序中,我收到一条错误,上面写着“原始无法解析或不是字段”:mMediaPlayer = MediaPlayer.create(this,R.raw.test_cbr) ;
我不确定R.raw.test_cbr究竟是什么(我没有写这段代码)有人可以解释一下R.raw.test_cbr是什么以及如何解决这个问题?
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;
}
}
}
答案 0 :(得分:7)
我不确定R.raw.test_cbr究竟是什么(我没有写这段代码)有人可以解释一下R.raw.test_cbr是什么以及如何解决这个问题?
R.raw
是指res/raw
中放置的“原始”资源。 “Raw”表示资源文件按原样包含在应用程序包中,无需任何编译时修改。
(至少在理论上。我遇到了工具链修改原始资源的问题,但这超出了这个问题的范围。)
您收到此编译时错误,因为您没有res/raw
文件夹,并且R.raw
中未生成R.java
嵌套类。
R.raw.test_cbr
引用test_cbr.ext
文件夹中的文件res/raw
,其中ext
只是文件扩展名。
由于您正在提供MediaPlayer
,因此您应该放置一些音频媒体文件test_cbr
,例如text_cbr.mp3
中的res/raw
并重建您的应用程序。
答案 1 :(得分:0)
原始文件夹进入Android项目的res文件夹。一旦进入/ res,你就可以通过R.raw
找到它答案 2 :(得分:0)
当我遇到这个问题时,还有另外一个问题。资源的名称应仅包含小写字母。如果不是,则对R的任何引用都会导致问题。还必须延期