android studio media player null对象引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

解决方案是重新编码mp3文件。

以上是关于android studio media player null对象引用的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 添加admob googgle play services

带有 Google Play 服务的 Android Studio

在 Play 商店进行 beta 测试的 Android Studio 应用

关于 Android Studio 上的 Google Play 游戏服务

在 Android Studio 中导入 Google Play Services 库

Android Studio 中带有 Proguard 的 Google Play 服务