当我的应用程序运行时,硬件音量按钮不起作用
Posted
技术标签:
【中文标题】当我的应用程序运行时,硬件音量按钮不起作用【英文标题】:Hardware volume buttons are not working when my app is running 【发布时间】:2013-12-17 19:43:21 【问题描述】:我一直在开发一个播放音频的应用程序。我目前正在将音频作为 STREAM_MUSIC 类型的流播放,并且效果很好。我希望能够使用设备上的硬件音量控件来控制音量。当我在应用程序中时,硬件按钮不做任何事情,音量不会改变,吐司也不会弹出。然后我按下主页按钮,使应用程序在后台运行,硬件音量按钮工作。它们仅在我的应用程序在后台运行时才起作用。
我尝试在我的onCreate()
方法中使用代码this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
,但这并没有改变应用程序的行为,我仍然面临同样的问题。
我还在 DROID 2、DROID RAZR、Samsung Galaxy s3、Samsung Galaxy s4、Lenovo 平板电脑和有根 DROID 2 上进行了测试,但它们的行为都相同。
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
setVolumeControlStream(audio.STREAM_MUSIC); //this line should set up the hardware
//buttons to control the volume
if (QtApplication.m_delegateObject != null && QtApplication.onCreate != null)
QtApplication.invokeDelegateMethod(QtApplication.onCreate, savedInstanceState);
return;
requestWindowFeature(Window.FEATURE_NO_TITLE);
try
m_activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
catch (NameNotFoundException e)
e.printStackTrace();
finish();
return;
if (null == getLastNonConfigurationInstance())
// if splash screen is defined, then show it
if (m_activityInfo.metaData.containsKey("android.app.splash_screen") )
setContentView(m_activityInfo.metaData.getInt("android.app.splash_screen"));
startApp(true);
【问题讨论】:
【参考方案1】:您可能很想尝试聆听音量键按下并以这种方式修改音频流的音量。忍住冲动。 Android 提供了方便的 setVolumeControlStream() 方法来将音量键按下定向到您指定的音频流。
看看这个,我认为它可能会有所帮助:Use Hardware Volume Keys to Control Your App’s Audio Volume
编辑:
在你的oncreate
方法上你必须做的:
this.setVolumeControlStream(AudioManager.STREAM_MUSIC); //if you use AudioManager.STREAM_MUSIC to load the sound
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener()
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status)
loaded = true;
);
soundPool.load(this, R.raw.sound1, 1); // your sound
【讨论】:
我尝试在我的 onCreate() 方法中使用 setVolumeControlStream() 并没有改变任何东西。 如果您向我们展示您已经编写的代码,我们可能会有所帮助。 @kobihudson 我看不到您在哪里加载声音,但我会更新我的答案,希望对您有所帮助。 谢谢,我认为这可能会有所帮助。以上是关于当我的应用程序运行时,硬件音量按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode 12 上运行应用程序时按钮不起作用 [重复]