例如,我正在尝试调整我的应用程序的音量输出,使其与播放音乐的另一个应用程序的可能音频流的音量相匹配。
我认为visualiser.getmeasurementpeakrms()可能是获取其他应用程序实际容量的一种方法。我没有明确地寻找读取音量滑块设置的方法,这对于我的目标来说是不够的。
我在清单文件中包含了所需的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
因此,我手动将麦克风权限设置为android设置中允许的权限。
这是我的班级:
class VolumeMatcher{
private Visualizer visualizer = null;
private MediaPlayer mediaPlayer = new MediaPlayer();
private Visualizer.MeasurementPeakRms measurementPeakRms;
public VolumeMatcher(Context context){
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
int audioSessionId = mediaPlayer.getAudioSessionId();
System.out.println("AudioSessionId for music stream: " + audioSessionId);
visualizer = new Visualizer(audioSessionId);
visualizer.setEnabled(true);
visualizer.setMeasurementMode(Visualizer.MEASUREMENT_MODE_PEAK_RMS);
measurementPeakRms = new Visualizer.MeasurementPeakRms();
}
private void getSoundLevel()
{
int measuredPeakRms =visualizer.getMeasurementPeakRms(measurementPeakRms);
Log.d(TAG, "MeasuredPeakRms: " +measuredPeakRms + ", mPeak: "+ measurementPeakRms.mPeak + ", mRms: " +measurementPeakRms.mRms);
}
}
当我调用getsoundlevel时,它总是在日志中写入以下内容:(不管是否有音频播放或音量(spotify、youtube或rocketplayer))。我确保在启动我的应用程序(在构建过程中)时播放音频流。
测量峰值KRMS:0,mpeak:-9600,mrms:-9600
我怀疑mediaplayer.getaudiosessionid()是否返回正确的audiosessionid,例如spotify。在我的例子中,它返回像60121这样的高值。
你知道我犯了什么错误吗?play store中有音频可视化应用程序,可以获取其他应用程序的音频输出流
谢谢:)
暂无答案!
目前还没有任何答案,快来回答吧!