V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
storypanda
V2EX  ›  问与答

Android 安全音量的设置以及源码阅读问题

  •  
  •   storypanda · 2019-06-13 21:26:01 +08:00 · 674 次点击
    这是一个创建于 1750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在没有接触 Android 安全音量的时候,以下是自己的尝试,这段代码当然不完善:

    首先获得最大音量,之后除以二,后来看看这种方案在是太想当然了

    private int VoiceCallVolumeMoreHalf() {
    
            AudioManager mAudioManager = null;
            Integer mute = 0;
            //Integer VoiceCallCurrentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
    
            int VoiceCallCurrentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL); //1.获得当前音量大小,设置并返回为正数
             return VoiceCallCurrentVolume;
    
            //int MoreHaif = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL) / 2; //使用最大音量除以 2 得出平均值
    
            //Log.d(MoreHaif);
    
             if (VoiceCallCurrentVolume < mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL)){
                 return
            }
        }
    
    

    自己当时的思路是: 首先将音量设置为整形,之后获取最大值之后也返回最大值的整形,进行判断,如果超过了一半(这里的一半是自己臆想 /使用函数计算的)就会有安全音量提醒。

    当得知安全音量中 Android 有封装好了之后,使用以下代码就好:

    audioManager.setStreamVolume ( STREAM_MUSIC,newIndex,0 ); 
    if ( Build.VERSION.SDK_INT> = 18 && audioManager.getStreamVolume ( STREAM_MUSIC )<newIndex ){ 
        audioManager.setStreamVolume ( STREAM_MUSIC,newIndex,FLAG_SHOW_UI ); 
    }
    

    参考链接当中全都是系统源码,需要设置常量等,但都是源码。

    问题:

    1. 是否需要在自己的应用中创建源码里出现的相关 Java 文件并设置常量等?
    2. 在阅读源码的过程中,如何将源码里的思路转换成应用开发端的代码?
    3. 在上述的代码里,如何设置 newIndex ? newIndex 的来源是?
    4. 在开发(包括但不限于)相应模块时,如何确定什么时候用什么方法,或者自己造方法写函数,还是从侧面应证了看 API 文档或者 SDK 文档的重要性?

    参考链接:

    一点小小的经验:Android 上的「安全音量」 - Yrom's

    这个问题同时发表于SegmentFault,有删改。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3248 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:56 · PVG 21:56 · LAX 06:56 · JFK 09:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.