android studio media player null对象引用

仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述android studio media player null对象引用相关的知识,希望能为你提供帮助。
我试图在android Studio中使用媒体播放器时遇到麻烦,似乎我没有正确初始化媒体播放器,导致应用程序崩溃(在Android 8.0上运行的手机上)当SoundFXPlayer.setVolume()函数是调用。然而,该应用程序在模拟器(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。 null对象引用上的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); }

答案很可能不支持音频格式。您可以使用8位和16位线性PCM。以下是有关支持的媒体格式的更多信息:supported media formats
【android studio media player null对象引用】解决方案是重新编码mp3文件。

    推荐阅读