原始无法解决或不是一个领域

时间:2013-12-17 20:41:02

标签: java android audio mp3

我正在构建一个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;
        }

    }
}

3 个答案:

答案 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的任何引用都会导致问题。还必须延期