精华内容
下载资源
问答
  • 现爱绿软为大家带来的安卓 蓝牙音量控制 Bluetooth Volume Control付费高级特别版已经更新到v2.40蓝牙音量控制可使您的 Android 设备记住不同的蓝牙设备的对应音量。您可以单独为每一个蓝牙设备配置音乐与通话音量。...

    Bluetooth Volume Control是安卓平台上一款蓝牙音量控制应用。现爱绿软为大家带来的安卓 蓝牙音量控制 Bluetooth Volume Control付费高级特别版已经更新到v2.40

    蓝牙音量控制可使您的 Android 设备记住不同的蓝牙设备的对应音量。您可以单独为每一个蓝牙设备配置音乐与通话音量。每个蓝牙设备的时间和配置可以单独调整。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

    应用说明:

    这个应用程序可使您的 Android 设备记住不同的蓝牙设备的对应音量。

    您可以单独为每一个蓝牙设备配置音乐与通话音量。

    每个蓝牙设备的时间和配置可以单独调整。

    权限说明:

    · “互联网” 用于反馈 bug 报告。

    · “蓝牙” 用于连接、配置蓝牙设备。

    · “修改音频设置” 用于更改音量。

    · “启动完成” 用于在重新启动后恢复音量。

    · “WAKE_LOCK” 用于修复在三星设备上的错误,此权限是必要的,以避免错误。

    更新日志:

    v2.40

    • Improved autoplay handling (default key is now PLAY and the app will retry sending the command if nothing starts playing)

    版本说明:

    高级功能已解锁

    下载地址:

    展开全文
  • Android 蓝牙绝对音量

    2021-05-18 14:25:56
    Android 蓝牙绝对音量 概念 开启 Android 蓝牙绝对音量 概念 大概意思就是: 此功能提供了音量处理功能,以允许CT显示音量级滑块或类似功能。 提供了两个命令,允许设置绝音量,并观声音的变化。 ...

    目录

     

     

    Android 蓝牙绝对音量

    概念

    开启


     

    Android 蓝牙绝对音量

    概念

    大概意思就是:

    此功能提供了音量处理功能,以允许CT显示音量级滑块或类似功能。

    提供了两个命令,允许设置绝音量,并观声音的变化。

    SetAbsoluteVolume命令用于设置渲染设备使用的音量,音频接收端将作为此命令的TG。

    RegisterNotification 命令用于CT端监测TG的音量变化,或者实际音量大小

    参考:https://baijiahao.baidu.com/s?id=1680582087403721956&wfr=spider&for=pc

    绝对音量:Absolute volume,使CT和TG两端的音量等级相同,允许CT端展示音量等级,该功能主要提供了如下两个命令来处理音量

    SetAbsoluteVolume:设置绝对音量,音量变化的一方主动将音量等级设置到对方

    RegisterNotification:注册音量变化的通知事件,来观察音量变化,对方音量等级改变后通过监听来改变本端的音量等级

     

    开启

        private void switchVolumeDevice(@NonNull BluetoothDevice device) {
            // Inform the audio manager that the device has changed
            d("switchVolumeDevice: Set Absolute volume support to " + mDeviceMap.get(device));
            mAudioManager.avrcpSupportsAbsoluteVolume(device.getAddress(), mDeviceMap.get(device));
    
            // Get the current system volume and try to get the preference volume
            int savedVolume = getVolume(device, sNewDeviceVolume);
    
            d("switchVolumeDevice: savedVolume=" + savedVolume);
    
            // If absolute volume for the device is supported, set the volume for the device
            if (mDeviceMap.get(device)) {
                int avrcpVolume = systemToAvrcpVolume(savedVolume);
                mVolumeEventLogger.logd(TAG,
                        "switchVolumeDevice: Updating device volume: avrcpVolume=" + avrcpVolume);
                mNativeInterface.sendVolumeChanged(device.getAddress(), avrcpVolume);
            }
        }

     

    展开全文
  • Android蓝牙绝对音量问题

    万次阅读 2019-05-16 11:17:40
    问题Android连接蓝牙设备调节音量会出现乱变的问题 原因是由于上层判断出支持绝对音量设置,会调用绝对音量的设置,有些蓝牙设备设置绝对音量出问题导致的异常。 解决办法设置黑名单让一些设备不支持绝对音量的设置...

    问题Android连接蓝牙设备调节音量会出现乱变的问题

    原因是由于上层判断出支持绝对音量设置,会调用绝对音量的设置,有些蓝牙设备设置绝对音量出问题导致的异常。
    解决办法设置黑名单让一些设备不支持绝对音量的设置。
    external/bluetooth/bluedroid/btif/src/btif_rc.c

    /***************************************************************************
    **
    ** Function         set_volume
    **
    ** Description      Send current volume setting to remote side.
    **                  Support limited to SetAbsoluteVolume
    **                  This can be enhanced to support Relative Volume (AVRCP 1.0).
    **                  With RelateVolume, we will send VOLUME_UP/VOLUME_DOWN
    **                  as opposed to absolute volume level
    ** volume: Should be in the range 0-127. bit7 is reseved and cannot be set
    **
    ** Returns          bt_status_t
    **
    ***************************************************************************/
    static bt_status_t set_volume(uint8_t volume)
    {
        BTIF_TRACE_DEBUG1("%s", __FUNCTION__);
        CHECK_RC_CONNECTED
        tAVRC_STS status = BT_STATUS_UNSUPPORTED;
        rc_transaction_t *p_transaction=NULL;
        if(btif_rc_cb.rc_volume==volume)
        {
            status=BT_STATUS_DONE;
            BTIF_TRACE_ERROR2("%s: volume value already set earlier: 0x%02x",__FUNCTION__, volume);
            return status;
        }
    
        if ((btif_rc_cb.rc_features & BTA_AV_FEAT_RCTG) &&
            (btif_rc_cb.rc_features & BTA_AV_FEAT_ADV_CTRL))
        {
            tAVRC_COMMAND avrc_cmd = {0};
            BT_HDR *p_msg = NULL;
    
            BTIF_TRACE_ERROR2("%s: Peer supports absolute volume. newVolume=%d", __FUNCTION__, volume);
    
    

    黑名单设置

    static const UINT8 rc_black_addr_prefix[][3] = {
        {0x0, 0x18, 0x6B}, // LG HBS-730
        {0x0, 0x26, 0x7E}  // VW Passat
    };
    
    static const UINT8 rc_white_addr_prefix[][3] = {
        {0x94, 0xCE, 0x2C}, // Sony SBH50
        {0x30, 0x17, 0xC8}  // Sony wm600
    };
    
    static BOOLEAN dev_blacklisted_for_absolute_volume(BD_ADDR peer_dev)
    {
        int i;
        int whitelist_size = sizeof(rc_white_addr_prefix)/sizeof(rc_white_addr_prefix[0]);
        for (i = 0; i < whitelist_size; i++) {
            if (rc_white_addr_prefix[i][0] == peer_dev[0] &&
                rc_white_addr_prefix[i][1] == peer_dev[1] &&
                rc_white_addr_prefix[i][2] == peer_dev[2]) {
                BTIF_TRACE_DEBUG3("whitelist absolute volume for %02x:%02x:%02x",
                                    peer_dev[0], peer_dev[1], peer_dev[2]);
                return FALSE;
            }
        }
        BTIF_TRACE_WARNING3("blacklist absolute volume for %02x:%02x:%02x",
                            peer_dev[0], peer_dev[1], peer_dev[2]);
        return TRUE;
    } 
    void handle_rc_features()
    {
        btrc_remote_features_t rc_features = BTRC_FEAT_NONE;
        bt_bdaddr_t rc_addr;
        bdcpy(rc_addr.address, btif_rc_cb.rc_addr);
    
        if (dev_blacklisted_for_absolute_volume(btif_rc_cb.rc_addr))
        {
        	//不支持绝对音量设置
            btif_rc_cb.rc_features &= ~BTA_AV_FEAT_ADV_CTRL;
        }
    
        if (btif_rc_cb.rc_features & BTA_AV_FEAT_BROWSE)
        {
            rc_features |= BTRC_FEAT_BROWSE;
        }
        if ( (btif_rc_cb.rc_features & BTA_AV_FEAT_ADV_CTRL) &&
             (btif_rc_cb.rc_features & BTA_AV_FEAT_RCTG))
        { 
            rc_features |= BTRC_FEAT_ABSOLUTE_VOLUME;
        }
        if (btif_rc_cb.rc_features & BTA_AV_FEAT_METADATA)
        { 
            rc_features |= BTRC_FEAT_METADATA;
        }
    ...
    }
    
    

    frameworks/base/media/java/android/media/AudioSerivce.java

            public void applyDeviceVolume(int device) {
                int index;
                if (isMuted()) {
                    index = 0;
                } else if ((device & AudioSystem.DEVICE_OUT_ALL_A2DP) != 0 &&
                           mAvrcpAbsVolSupported) {   //mAvrcpAbsVolSupported 是底层返回是否支持绝对音量设置
                    index = (mIndexMax + 5)/10;
                } else {
                    index = (getIndex(device) + 5)/10;
                }
                AudioSystem.setStreamVolumeIndex(mStreamType, index, device);
            }
    
    
    展开全文
  • 我有一个Android设备作为一个免提客户端设备使用hfp。我可以接到一个电话,扬声器和麦克风工作正如预期。我的问题是,我似乎无法控制音量。我试着使用下面的代码行找到正确的流,但没有一个似乎工作。我跟踪了从电话...

    我有一个Android设备作为一个免提客户端设备使用hfp。

    我可以接到一个电话,扬声器和麦克风工作正如预期。

    我的问题是,我似乎无法控制音量。

    我试着使用下面的代码行找到正确的流,但没有一个似乎工作。

    我跟踪了从电话发送到客户端的类HeadsetClientStateMachine中的卷命令,线路#1822在以下链接:HeadsetClientStateMachine from lolipop

    case EVENT_TYPE_VOLUME_CHANGED:

    if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) {

    mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI);

    mVgsFromStack = true;

    Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2);

    }

    当我更改手机上的音量,我看到日志显示声音的更新值,这意味着正在调用setStreamVolume()方法,但卷不会更改。

    有谁知道什么可能是导致这个问题?

    编辑:

    我仍然在寻找一个答案,我现在寻找的音频HAL实现。我怀疑HAL和音频驱动程序之间的链接是不正确的…我不知道很多低级实现,不知道我应该寻找什么。

    展开全文
  • Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)。记得手机要先连接蓝牙耳机,才能通过蓝牙耳机对讲。
  • 【完善】Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调,增加蓝牙开关和配对列表)
  • 自动音量控制 可以根据连接的蓝牙输出来管理Android设备音量Android应用。 链接到
  • Android平台音量调节 本文基于Android 8.0讲述Android平台原生音量控制功能。 流的定义 Android中,音量都是分开控制,各种流定义各种流的音量。在Android8.0中,定义了11种流类型。对每种流类型都定义了最大...
  • Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)。记得手机要先连接蓝牙耳机,才能通过蓝牙耳机对讲。
  • 文章就Android平台主机接不同的外放设备时的音量调节策略做简要介绍。 一、主机版本 主机 版本 RK3399广告屏 Android7 Skyworth平板 Android9 Skyworth车机 Android9 二、外设类型 USB音箱底座 蓝牙...
  • android 系统音量设置

    千次阅读 2016-10-08 14:51:23
    设置系统音量首先要获取AudioManager 对象,android系统针对不同的音量类型单独进行设置:获取AudioManager 对象AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);获取要选择的音量类型:...
  • Android音量调节(一)音量键的处理流程

    千次阅读 多人点赞 2018-12-26 17:23:44
    文章目录1.Android音量键调节音量流程2.Android流定义3.按键的处理流程3.1 adjustSuggestedStreamVolume3.2 ...在Android系统中,音量都是分开控制的,比如媒体音量,铃声音量,闹钟音量,蓝牙音量,...
  •  我将在这篇文章中介绍了的Android蓝牙程序。这个程序就是将实现把手机变做电脑PPT播放的遥控器:用音量加和音量减键来控制PPT页面的切换。 遥控器服务器端 首先,我们需要编写一个遥控器的服务器端(支持...
  • 我有一个问题,AB快门(蓝牙)总是启动音量,而我想使用蓝牙键事件的其他东西。但当我从设备的音量增大按钮出来的时候,我仍然希望音量增大能起作用。我发现的解决方案是为了我的目的处理短事件——并且只允许在按下设备...
  • android软件音量控制

    千次阅读 2014-05-19 22:18:35
    如果你的应用程序播放音频,你的用户能使用硬件或者软件音量控制,来控制他们设备,蓝牙耳机,或者听筒的音量是非常重要的。    相似的,在适当的地方可用,播放,停止,暂停,上一首,和下一首媒体...
  • 文章目录AndroidN 音量调节简单流程平台:Android NAudio流的定义流类型最大音量最小音量默认音量音频流映射音量按键处理流程1. 按下音量键时触发事件2. 发送调节音量的请求传至AudioService3. 进入AudioService::...
  • android 蓝牙键盘More and more, people are starting to discover that tablets make decent productivity tools. With devices like the Microsoft Surface and iPad Pro becoming more popular, you may be ...
  • Android蓝牙服务

    千次阅读 2019-06-18 15:22:07
    From 蓝牙服务 通过蓝牙,设备可以传输数据并供各种交互式服务(例如音频、短信和电话)使用。您可以在以下位置找到用于不同服务的蓝牙配置文件:include...对于大多数音频用例,Android 设备是音频源,呈现设备(...
  • Android Audio音量设置流程

    千次阅读 2017-10-25 23:57:02
     ... Audio音量调节是一级一级调节,而且分不同的流类型,如响铃,...不同的设备(蓝牙设备)的设置方法有所区别。 sdk的api,设置相应流的音量。不同的流index的范围不一样 //--->frameworks/base/media/java/andro
  • 目前大多数音频视频设备采用红外遥控器,由于距离、角度、障碍物等的影响,红外遥控器的应用受到了很大限制。蓝牙无线通信技术可以实现传统红外...蓝牙耳机按键的处理在android层主要就是对BT的AVRCP profile的处...
  • android 音量控制

    千次阅读 2016-11-24 16:44:02
    Android平台上,音量键,主页键(home),都是全局按键,但是主页键是个例外不能被应用所捕获。下面分析一下音量按键的流程,主要从framework层处理开始,至于 EventHub 从驱动的/dev/input/event0获取按键信息到...
  • android系统音量界面相关

    千次阅读 2016-12-26 11:22:55
    其实还有一个方法就是驱动修改默认的音频通道,但是有可能影响到其他的音量,比如蓝牙耳机连接时的音量,所以还是在上层修改比较容易控制 思路:不去强行修改原本正确的输出设备,以免导致其他bug,在做音量...
  • Android蓝牙开发音频焦点

    千次阅读 2017-11-16 09:54:24
    在车机开发中,蓝牙模块一般是定制的,而蓝牙的音频输出,包括蓝牙电话,蓝牙音乐,都要制定声音策略,进行音频焦点的管理。 音频焦点的管理,这一点类似于android多媒体开发时的音频焦点管理,也是通过AudioManager...
  • android音量调节的办法

    千次阅读 2017-11-13 11:22:37
    Android调整音量方法有两种,一种是渐进式,即像手动按音量键一样,一步一步增加或减少,另一种是直接设置音量值.  渐进式的:  AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  ...
  • android蓝牙开发——基本概念
  • Android 蓝牙开发(八)hfp接听、挂断电话

    万次阅读 热门讨论 2017-05-10 16:32:15
    继续研究hfp相关功能。蓝牙耳机可以控制手机接听、拒接、挂断电话,拨打电话等功能。本文主要分析下起这些操作的大致流程。
  • Android 蓝牙体系学习记录-框架和概念 平时总是忙, 上班事情多, 还总是加班, 搞得好像没时间做笔记了, 实际上还是因为没有养成习惯. 做笔记不仅能帮助自己记录学习的东西, 也能给需要的人提供帮助. 该文档记录学习...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,614
精华内容 1,445
关键字:

android蓝牙音量