据我所知,这是飞利浦Android TV用户的常见问题(例如

this篇中的第22页,或

that讨论).

一般来说,您的任务的模板是跟踪插入/拔出事件和“系统/音乐”音频流(或媒体按钮按下)的音量的服务,而不是对“有线耳机”音频“流”进行相应的更改(没有这样的流在“标准”Android中,但显然

类似于

“Android Philips”级别的东西.问题是,似乎不可能只使用没有“飞利浦Android TV API”的Android SDK来改变音量“有线耳机”音频流级别(可能它不是公共的).

“VolumeTrackingService”的模板源代码可能是这样的:

public class VolumeTrackingService extends Service {

private static final String TAG = VolumeTrackingService.class.getSimpleName();

public static final String ACTION_START = "VolumeTrackingService.ACTION_START";

public static final String ACTION_STOP = "VolumeTrackingService.ACTION_STOP";

HeadsetPlugIntentReceiver mHeadsetPlugReceiver;

private static boolean mHeadsetPlugged = false;

private SettingsContentObserver mSettingsContentObserver;

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

mHeadsetPlugReceiver = new HeadsetPlugIntentReceiver();

registerReceiver(mHeadsetPlugReceiver,new IntentFilter(Intent.ACTION_HEADSET_PLUG));

mSettingsContentObserver = new SettingsContentObserver(new Handler());

getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI,true,mSettingsContentObserver);

}

@Override

public void onDestroy() {

getApplicationContext().getContentResolver().unregisterContentObserver(mSettingsContentObserver);

unregisterReceiver(mHeadsetPlugReceiver);

super.onDestroy();

}

@Override

public int onStartCommand(Intent intent,int flags,int startId) {

if (intent != null) {

String actionRequested = intent.getAction();

if (ACTION_START.equals(actionRequested)) {

} else if (ACTION_STOP.equals(actionRequested)) {

stopSelf();

}

}

return START_STICKY;

}

private int getSystemVolumeInPercentage() {

AudioManager audioManager = (AudioManager) getSystemService(Context.AUdio_SERVICE);

final int streamVolumeMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

final int streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

return 100 * streamVolume / streamVolumeMax;

}

private void setHeadphonesVolume(int volumeInPercentage) {

// there should be magic of wired headphones volume level changing

}

private void processVolumeChanges() {

if (mHeadsetPlugged) {

int systemVolumeInPercentage = getSystemVolumeInPercentage();

setHeadphonesVolume(systemVolumeInPercentage);

}

}

public class SettingsContentObserver extends ContentObserver {

public SettingsContentObserver(Handler handler) {

super(handler);

}

@Override

public boolean deliverSelfNotifications() {

return super.deliverSelfNotifications();

}

@Override

public void onChange(boolean selfChange) {

super.onChange(selfChange);

if (mHeadsetPlugged ) {

processVolumeChanges();

}

}

}

public class HeadsetPlugIntentReceiver extends android.content.BroadcastReceiver {

@Override

public void onReceive(Context ctx,Intent intent) {

if (intent.getAction().equals(android.media.AudioManager.ACTION_HEADSET_PLUG)) {

mHeadsetPlugged = intent.getIntExtra("state",0) == 1;

}

}

}

}

不幸的是,它没有解决主要问题:改变有线耳机的音量水平(如果没有“飞利浦Android TV API”,可能是不可能的).

但是如果你的环绕声系统有遥控器你可以做一些解决方法:在上述服务中模拟音响系统遥控器命令,并通过连接到飞利浦49PUS6401 Android TV的USB主机的红外加密狗发送.

android 耳机 音量调节 id,Android链接耳机音量到主音量相关推荐

  1. android 耳机 音量调节 id,Android音频相关(一)插入耳机后调节音量(安全音量)...

    一.安全音量提醒框的开启 二.修改安全音量提醒框显示 三.重启后还会显示安全音量提醒框 四.一些关于安全音量的初始值 一.安全音量提醒框的开启 安卓系统是有耳机音量保护机制的,对于一些出口欧盟的手机来 ...

  2. android子view获取父布局,Android获取布局父ID(Android get layout parent id)

    Android获取布局父ID(Android get layout parent id) 我想知道View和ViewParent有什么区别? 我想获取ImageView父级的Id,但我不能这样做: m ...

  3. android 音量调节 seekbar,Android 使用SeekBar调节系统音量

    以下是一个使用SeekBar来调节系统音量的实例: 1.XML: android:id="@+id/sound" android:layout_width="150px& ...

  4. android textview 常用属性id,Android TextView常用属性

    [说明] TextView是用来显示文本的组件.以下介绍的是XML代码中的属性,在java代码中同样可通过 "组件名.setXXX()方法设置.如,tv.setTextColor(); [属 ...

  5. android listview 列加id,Android实战开发之ListView同一个item显示2列的实现方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Android实战开发中,ListView控件用途十分广泛,各种自定义控件多种多样.当项目要求实现一个2列的商品列表形式的界面,我们首先肯定想到用List ...

  6. android给组件加上id,Android组件化入门:一步步搭建组件化架构

    Linux编程点击右侧存眷,免费入门到精晓! 作者丨Android手艺干货分享 https://www.jianshu.com/p/73b4fc288dd8 1.媒介 比来因为买卖需求调换,有考虑采用 ...

  7. android 音量调节框,Android 音量调节方法

    Android 程序获取.设置铃声和音量通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单,如下代码: AudioManager mAudioManager = (Au ...

  8. 安卓耳机左右音量调节_安卓手机耳机声道怎么调

    展开全部 你可以试下两种方法: 按住耳机的接电话键 把插口往外拔,直到拔到声音正常e69da5e887aa62616964757a686964616f31333365643661为止(也许只拔一点,也 ...

  9. android获取子线程id,Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID

    /*** Returns the identifier of this process's user. * 返回此进程的用户的标识符.*/Log.e(TAG,"Process.myUid() ...

最新文章

  1. Ubuntu 14.04 64bit上玩转graphviz绘图工具
  2. Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别
  3. 9张表格学会,子网划分
  4. stylus之内置方法(Built-in Functions)
  5. 代码重构的方法和经验_关于烂代码优化重构的几点经验
  6. Linux配置本地yum源(RHEL8)
  7. Bulk处理文档大小的最佳值
  8. 中国连锁餐饮企业的资本之路
  9. 递归--递推之组合数
  10. HOLOLENS不适合加天空盒
  11. yii 提交表单报400错误,提示 “您提交的数据无法验证”,问题处理。
  12. 我从佛学里悟到的自由
  13. Java8 Stream list转map及问题解决
  14. 自动html5视频播放插件,视频自动转HTML5播放器插件
  15. 贪心(百练1328):安放雷达(区间问题)
  16. vul/0day/shellcode/payload/poc/exp
  17. vue使用原生高德地图
  18. 四川川之音文化传媒有限公司:电商物流运行呈加快恢复态势
  19. uni-app离线打包遇到的坑
  20. 一个撒尿只用3秒的男人,成为地球首富后,却要卖豪宅上火星?

热门文章

  1. 比火车硬座票还便宜的机票预订方法
  2. Cayman Finance对欧盟认可开曼群岛的合作感到高兴
  3. Docker 入门看这一篇就够了!
  4. 语音识别系列︱paddlespeech的开源语音识别模型测试(三)
  5. 无法完成您的itunes store的请求_itunes连不上网络怎么办 itunes连不上网络解决方法【详细介绍】...
  6. 【Web前端】设计模式、闭包
  7. C#界面美化推荐DotNetBar
  8. windows系统,删除文件慢,使用命令行快速删除大文件
  9. 【粉丝投稿】海外留学生回国三面华为成功拿下offer,附上大佬的面经希望帮助到大家!
  10. 案例解读华为隐私计算产品TICS如何实现城市跨部门数据隐私计算