android 耳机 音量调节 id,Android链接耳机音量到主音量

据我所知,这是飞利浦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主机的红外加密狗发送.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,如果需要在配对蓝牙耳机时设置默认音量,可以通过编写蓝牙连接和音量控制的相关代码来实现。通常可以使用BluetoothAdapter和BluetoothDevice类来实现蓝牙设备的配对和连接,同时可以使用AudioManager类来控制设备的音量设置。 首先,需要在AndroidManifest.xml中添加蓝牙和音频权限: ```xml <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> ``` 然后,可以在相应的Activity或Fragment中编写蓝牙连接和音量设置的代码。例如,在配对蓝牙设备时,可以使用以下代码: ```java BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothDevice bluetoothDevice = bluetoothAdapter.getRemoteDevice("蓝牙设备地址"); // 连接蓝牙设备 bluetoothDevice.createBond(); // 设置蓝牙音量 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, yourDefaultVolume, 0); ``` 其中,"蓝牙设备地址"应替换为实际蓝牙设备的地址,yourDefaultVolume为需要设置的默认音量值。通过这样的方式,可以在配对蓝牙设备时设置默认音量。 需要注意的是,不同的Android版本可能会存在一些差异,而且一些蓝牙耳机可能有自己的默认音量设置,因此在实际开发中需要做好测试和兼容处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值