尝试在Android Studio中使用媒体播放器时遇到麻烦,似乎我没有正确初始化媒体播放器,当SoundFXPlayer.setVolume()导致应用程序崩溃(在运行Android 8.0的手机上) )函数被调用。但是,该应用程序可以在仿真器(API 26-28)中正常运行,并且我测试过的大多数电话(API 26-27上的电话)以及在Android 8.0(API 28)上运行的电话除外。 总结一下 1.如何正确初始化媒体播放器 2.为什么我的代码可以在模拟器上运行而不能在电话上运行。
我是stackoverflow的新手,并且没有编程经验,如果没有提供足够的详细信息,我们感到抱歉。
错误消息如下:
java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.garmischwong.buttongame / com.example.garmischwong.buttongame.MenuActivity}: java.lang.NullPointerException:尝试调用虚拟方法'void 空对象上的android.media.MediaPlayer.setVolume(float,float)' 参考
package com.example.garmischwong.buttongame;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MenuActivity extends AppCompatActivity {
private Button gameButton;
public int SoundFXVolume;
public MediaPlayer SoundFXPlayer;
public static final String GAME_PREF = "gamePref" ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
gameButton = findViewById(R.id.gameButton);
SoundFXPlayer = MediaPlayer.create(this, R.raw.menu_selection_click);
loadSoundFX();
SoundFXPlayer.setVolume((float)SoundFXVolume/100,(float)SoundFXVolume/100);
}
public void goToGameAct(View view)
{
//////Intent to game///////
SoundFXPlayer.start();
Intent goToGameIntent = new Intent(MenuActivity.this, GameActivity.class);
startActivity(goToGameIntent);
finish();
}
public void loadSoundFX()
{
SharedPreferences gamePref = getSharedPreferences(String.valueOf(GAME_PREF), MODE_PRIVATE);
SoundFXVolume = gamePref.getInt("Sound_FX_Volume", 30);
}
答案 0 :(得分:0)
不支持大多数可能的音频格式。您可以使用8位和16位线性PCM。以下是有关支持的媒体格式的更多信息:supported media formats
解决方案是重新编码mp3文件。