visualizer.measurementpeakrms对于mpeak和mrms始终包含-9600

jjjwad0x  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(209)

例如,我正在尝试调整我的应用程序的音量输出,使其与播放音乐的另一个应用程序的可能音频流的音量相匹配。
我认为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中有音频可视化应用程序,可以获取其他应用程序的音频输出流
谢谢:)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题