音乐文件播放 45 秒,然后在 android 应用程序中停止

Music file plays for 45 seconds and then stops in android app

我正在尝试使用 android 工作室和 Java 为我的 android phone 制作游戏。当我将音乐文件放入应用程序时,它会播放,但只播放了 45 秒就停止了。我已经在其他几个音乐文件上测试过它,看看它是否是音乐文件,但我仍然遇到同样的错误。我的目标是让音乐像游戏一样循环播放。我尝试了各种 youtube 视频并查看了其他网站,但我仍然会遇到同样的问题或无法编译代码。

package com.example.androidstudio2dgamedevelopment;


import static android.media.MediaPlayer.*;

import android.animation.Animator;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.media.MediaPlayer;

import android.view.WindowManager;

import java.util.Vector;

/**
 * Main Activity is the entry point to our application
 */
public class MainActivity extends Activity {

    private int width;
    private int height;

    MediaPlayer bkgrdmsc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MediaPlayer mediaPlayer = create(this, R.raw.fg);
        mediaPlayer.setLooping(true);
        mediaPlayer.start();

        //Set Window to fullscreen (will hide status bar)
        Window window = getWindow();
                this.width = (240);
                this.height = (240);

        //Set Content view to game, so that objects in the Game Class can be rendered to the screen
        setContentView(new Game(this));
    }
}

只需为媒体播放器添加 setLooping(true)。

Uri uri = createUri(context, R.raw.fg);
Mediaplayer mediaPlayer= new MediaPlayer();
mediaPlayer.setDataSource(context, uri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepare();
mediaPlayer.setLooping(true);
mediaPlayer.start();

我知道那是什么了。这是我使用的代码,它对我有用。在我问问题之前,我往往无法找到问题的答案。

package com.example.androidstudio2dgamedevelopment;

import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Window;

/**
 * Main Activity is the entry point to our application
 */
public class MainActivity extends Activity {

    private int width;
    private int height;

    MediaPlayer mysong;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mysong = MediaPlayer.create(MainActivity.this, R.raw.bc);
        mysong.start();
        mysong.setLooping(true);

        //Set Window to fullscreen (will hide status bar)
        Window window = getWindow();
                this.width = (240);
                this.height = (240);

        //Set Content view to game, so that objects in the Game Class can be rendered to the screen
        setContentView(new Game(this));
    }

    @Override
    protected void onPause() {
        super.onPause();
        mysong.release();
        finish();
    }
}

这是我认为我做错的地方。

我使用 MediaPlayer 作为变量而不是 mysong 这似乎对我有用。我也忘记在我发布的代码中的 this 之前添加 MainActivity

        mysong = MediaPlayer.create(MainActivity.this, R.raw.bc);
        mysong.start();
        mysong.setLooping(true);

最后我也加了这个

    @Override
    protected void onPause() {
        super.onPause();
        mysong.release();
        finish();
    }