package com.uiuios.aios.activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraManager; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.BatteryManager; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.uiuios.aios.R; import com.uiuios.aios.manager.AmapManager; import com.uiuios.aios.utils.BrightnessUtils; import com.uiuios.aios.view.RulerSeekBar; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class ControlActivity extends AppCompatActivity { private static final String TAG = ControlActivity.class.getSimpleName(); @BindView(R.id.iv_back) ImageView iv_back; @BindView(R.id.tv_wifi) TextView tv_wifi; @BindView(R.id.tv_wifi_ssid) TextView tv_wifi_ssid; @BindView(R.id.tv_bt) TextView tv_bt; @BindView(R.id.tv_bt_ssid) TextView tv_bt_ssid; // @BindView(R.id.tv_font_size) // TextView tv_font_size; @BindView(R.id.seekBar) RulerSeekBar seekBar; @BindView(R.id.seekbar_brightness) SeekBar seekbar_brightness; @BindView(R.id.seekbar_sound) SeekBar seekbar_sound; @BindView(R.id.tv_sound) TextView tv_sound; @BindView(R.id.tv_battery) TextView tv_battery; @BindView(R.id.tv_electricity) TextView tv_electricity; @BindView(R.id.tv_flashlight) TextView tv_flashlight; @BindView(R.id.tv_flashlight_switch) TextView tv_flashlight_switch; @BindView(R.id.tv_brightness) TextView tv_brightness; @BindView(R.id.tv_location) TextView tv_location; @BindView(R.id.cl_wifi) ConstraintLayout cl_wifi; @BindView(R.id.cl_bt) ConstraintLayout cl_bt; @BindView(R.id.cl_battery) ConstraintLayout cl_battery; @BindView(R.id.cl_flashlight) ConstraintLayout cl_flashlight; @BindView(R.id.cl_location) ConstraintLayout cl_location; @OnClick({R.id.iv_back}) void OnClick(View v) { switch (v.getId()) { case R.id.iv_back: finish(); break; default: } } private ContentResolver crv; private static final String ACTION_FLASHLIGHT_CHANGED = "com.android.settings.flashlight.action.FLASHLIGHT_CHANGED"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_control); ButterKnife.bind(this); crv = getContentResolver(); initView(); } private void initView() { getWifi(); registerReceivers(); getBluetooth(); registerBluetoothReceiver(); getBattery(); registerBatteryReceiver(); getFlashlight(); getFontSize(); getLocation(); getBrightness(); getSound(); } private void getWifi() { cl_wifi.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); } }); if (isWifiEnabled()) { tv_wifi_ssid.setText(getConnectWifiSsid()); cl_wifi.setBackground(getDrawable(R.drawable.control_background_item)); } else { tv_wifi_ssid.setText("未连接"); cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis)); } } public boolean isWifiEnabled() { WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifiMgr.getWifiState() == WifiManager.WIFI_STATE_ENABLED) { ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifiInfo = connManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI); return wifiInfo.isConnected(); } else { return false; } } private WifiReceiver mWifiReceiver; private void registerReceivers() { registerWiFiReceiver(); } private void registerWiFiReceiver() { if (mWifiReceiver == null) { mWifiReceiver = new WifiReceiver(); } IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.RSSI_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION); filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION); filter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION); filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mWifiReceiver, filter); } public class WifiReceiver extends BroadcastReceiver { private static final String TAG = "wifiReceiver"; @Override public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case WifiManager.RSSI_CHANGED_ACTION: Log.e(TAG, "wifi信号强度变化"); break; //wifi连接上与否 case WifiManager.NETWORK_STATE_CHANGED_ACTION: NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) { Log.e(TAG, "wifi断开"); tv_wifi_ssid.setText("未连接"); cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis)); } else if (info.getState().equals(NetworkInfo.State.CONNECTED)) { WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); //获取当前wifi名称 String newSSID = wifiInfo.getSSID(); tv_wifi_ssid.setText(newSSID.replaceAll("\"", "")); cl_wifi.setBackground(getDrawable(R.drawable.control_background_item)); } break; //wifi打开与否 case WifiManager.WIFI_STATE_CHANGED_ACTION: int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED); if (wifistate == WifiManager.WIFI_STATE_DISABLED) { Log.e(TAG, "系统关闭wifi"); tv_wifi_ssid.setText("关"); cl_wifi.setBackground(getDrawable(R.drawable.control_background_item_dis)); } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) { Log.e(TAG, "系统开启wifi"); } break; default: } } } /** * 获取当前连接WIFI的SSID */ public String getSSID() { WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); if (wm != null) { WifiInfo winfo = wm.getConnectionInfo(); if (winfo != null) { String s = winfo.getSSID(); if (s.length() > 2 && s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"') { return s.substring(1, s.length() - 1); } } } return ""; } private String getConnectWifiSsid() { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); // //去掉带引号的字符串方法一 // String wifiInfo1 = wifiInfo.getSSID(); // if (wifiInfo1.contains("\"")) { // wifiInfo1 = wifiInfo1.substring(1, wifiInfo1.length() - 1); // } //去掉带引号的字符串方法二 String wifiSSID = wifiInfo.getSSID(); String wifiInfo1 = wifiSSID.replaceAll("\"", ""); return wifiInfo1; } private BluetoothAdapter bluetoothAdapter; private void getBluetooth() { bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter.isEnabled()) { if (isConnected()) { cl_bt.setBackground(getDrawable(R.drawable.control_background_item)); tv_bt_ssid.setText(getBluetoothDeviceName()); } else { cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis)); tv_bt_ssid.setText("未连接"); } } else { cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis)); tv_bt_ssid.setText("已关闭"); } getConnectedDevicesV1(); cl_bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); } }); } public boolean isConnected() { Set bondedDevices = bluetoothAdapter.getBondedDevices(); List deviceList = bondedDevices.stream().filter(new Predicate() { @Override public boolean test(BluetoothDevice bluetoothDevice) { return bluetoothDevice.isConnected(); } }).collect(Collectors.toList()); return deviceList.size() > 0; } public String getBluetoothDeviceName() { Set bondedDevices = bluetoothAdapter.getBondedDevices(); List deviceList = bondedDevices.stream().filter(new Predicate() { @Override public boolean test(BluetoothDevice bluetoothDevice) { return bluetoothDevice.isConnected(); } }).collect(Collectors.toList()); if (deviceList.size() == 0) { return "未连接"; } else { return deviceList.get(0).getName(); } } //TODO 根据mac地址判断是否已连接(这里参数可以直接用BluetoothDevice对象) //但这么写其实更通用。 public boolean isConnected(String macAddress) { if (!BluetoothAdapter.checkBluetoothAddress(macAddress)) { return false; } final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress); Method isConnectedMethod = null; boolean isConnected; try { isConnectedMethod = BluetoothDevice.class.getDeclaredMethod("isConnected", (Class[]) null); isConnectedMethod.setAccessible(true); isConnected = (boolean) isConnectedMethod.invoke(device, (Object[]) null); } catch (NoSuchMethodException e) { isConnected = false; } catch (IllegalAccessException e) { isConnected = false; } catch (InvocationTargetException e) { isConnected = false; } return isConnected; } /** * 获取系统中已连接的蓝牙设备 * * @return */ public Set getConnectedDevicesV1() { Class bluetoothAdapterClass = BluetoothAdapter.class;//得到BluetoothAdapter的Class对象 Set deviceSet = new HashSet<>(); //是否存在连接的蓝牙设备 try { Method method = bluetoothAdapterClass.getDeclaredMethod("getMostRecentlyConnectedDevices", (Class[]) null); //打开权限 method.setAccessible(true); List list = (List) method.invoke(BluetoothAdapter.getDefaultAdapter(), (Object[]) null); Log.e("zbh", "最近连接过的设备:"); for (BluetoothDevice dev : list ) { String Type = ""; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { switch (dev.getType()) { case BluetoothDevice.DEVICE_TYPE_CLASSIC: Type = "经典"; break; case BluetoothDevice.DEVICE_TYPE_LE: Type = "BLE"; break; case BluetoothDevice.DEVICE_TYPE_DUAL: Type = "双模"; break; default: Type = "未知"; break; } } String connect = "设备未连接"; if (isConnected(dev.getAddress())) { deviceSet.add(dev); connect = "设备已连接"; } Log.e("zbh", connect + ", address = " + dev.getAddress() + "(" + Type + "), name --> " + dev.getName()); } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return deviceSet; } private BluetoothMonitorReceiver bleListenerReceiver; private void registerBluetoothReceiver() { bleListenerReceiver = new BluetoothMonitorReceiver(); IntentFilter intentFilter = new IntentFilter(); // 监视蓝牙关闭和打开的状态 intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); // 监视蓝牙设备与APP连接的状态 intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); // 注册广播 registerReceiver(this.bleListenerReceiver, intentFilter); } public class BluetoothMonitorReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.e("BluetoothMonitorReceiver", "onReceive: " + action); if (!TextUtils.isEmpty(action)) { switch (action) { case BluetoothAdapter.ACTION_STATE_CHANGED: int blueState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0); switch (blueState) { case BluetoothAdapter.STATE_TURNING_ON: tv_bt_ssid.setText("正在打开"); cl_bt.setBackground(getDrawable(R.drawable.control_background_item)); break; case BluetoothAdapter.STATE_ON: tv_bt_ssid.setText("已打开"); cl_bt.setBackground(getDrawable(R.drawable.control_background_item)); break; case BluetoothAdapter.STATE_TURNING_OFF: tv_bt_ssid.setText("正在关闭"); cl_bt.setBackground(getDrawable(R.drawable.control_background_item)); break; case BluetoothAdapter.STATE_OFF: tv_bt_ssid.setText("已关闭"); cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis)); break; default: } break; case BluetoothDevice.ACTION_ACL_CONNECTED: tv_bt_ssid.setText(getBluetoothDeviceName()); cl_bt.setBackground(getDrawable(R.drawable.control_background_item)); break; case BluetoothDevice.ACTION_ACL_DISCONNECTED: tv_bt_ssid.setText("未连接"); cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis)); break; default: } } } } private void getBattery() { tv_electricity.setText(getBatteryCapacity() + "%"); if (isBatteryCharging()) { cl_battery.setBackground(getDrawable(R.drawable.control_background_item)); } else { cl_battery.setBackground(getDrawable(R.drawable.control_background_item_dis)); } } /** * 主动获取当前电池是否在充电 , 即数据线是否插在手机上 * * @return */ public boolean isBatteryCharging() { boolean isBatteryCharging = false; // 主动发送包含是否正在充电状态的广播 , 该广播会持续发送 IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); // 注册广播接受者 Intent intent = registerReceiver(null, intentFilter); // 获取充电状态 int batteryChargeState = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); // 判定是否是 AC 交流电充电 boolean isAc = batteryChargeState == BatteryManager.BATTERY_PLUGGED_AC; // 判断是否是 USB 充电 boolean isUsb = batteryChargeState == BatteryManager.BATTERY_PLUGGED_USB; // 判断是否是 无线充电 boolean isWireless = batteryChargeState == BatteryManager.BATTERY_PLUGGED_WIRELESS; // 如何上述任意一种为 true , 说明当前正在充电 isBatteryCharging = isAc || isUsb || isWireless; return isBatteryCharging; } public int getBatteryCapacity() { try { BatteryManager batteryManager = (BatteryManager) getSystemService(Context.BATTERY_SERVICE); return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); } catch (Exception e) { Log.e("getBattery", "getBattery" + e.getMessage()); } return 0; } private BatteryReceiver mBatteryReceiver; private void registerBatteryReceiver() { if (mBatteryReceiver == null) { mBatteryReceiver = new BatteryReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(Intent.ACTION_POWER_DISCONNECTED); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LEVEL_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(Intent.ACTION_BATTERY_OKAY); registerReceiver(mBatteryReceiver, filter); } } public class BatteryReceiver extends BroadcastReceiver { public static final String TAG = "BatteryReceiver"; @Override public void onReceive(Context context, Intent intent) { // 获取广播事件 String action = intent.getAction(); if (TextUtils.isEmpty(action)) return; Log.e(TAG, "onReceive: " + action); switch (action) { case Intent.ACTION_POWER_CONNECTED: cl_battery.setBackground(getDrawable(R.drawable.control_background_item)); break; case Intent.ACTION_POWER_DISCONNECTED: cl_battery.setBackground(getDrawable(R.drawable.control_background_item_dis)); break; case Intent.ACTION_BATTERY_LEVEL_CHANGED: tv_electricity.setText(getBatteryCapacity() + "%"); break; default: } } } private boolean flashing = false; private CameraManager cameraManager; private void getFlashlight() { if (isFlashlightAvailable()) { tv_flashlight_switch.setText("关"); cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis)); } else { tv_flashlight_switch.setText("不可用"); cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis)); return; } // if (isFlashlightEnabled()) { // tv_flashlight_switch.setText("开"); // cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item)); // } else { // tv_flashlight_switch.setText("关"); // cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis)); // } cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); cl_flashlight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (flashing) { try { String CameraId = cameraManager.getCameraIdList()[0]; cameraManager.setTorchMode(CameraId, false); } catch (CameraAccessException e) { e.printStackTrace(); } flashing = false; tv_flashlight_switch.setText("关"); cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item_dis)); } else { try { String CameraId = cameraManager.getCameraIdList()[0]; cameraManager.setTorchMode(CameraId, true); } catch (CameraAccessException e) { e.printStackTrace(); } tv_flashlight_switch.setText("开"); cl_flashlight.setBackground(getDrawable(R.drawable.control_background_item)); flashing = true; } } }); } private boolean isFlashlightAvailable() { return getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); } private static String getCameraId(Context context) throws CameraAccessException { final CameraManager cameraManager = context.getSystemService(CameraManager.class); final String[] ids = cameraManager.getCameraIdList(); for (String id : ids) { CameraCharacteristics c = cameraManager.getCameraCharacteristics(id); Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE); Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING); if (flashAvailable != null && flashAvailable && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) { return id; } } return null; } private boolean isFlashlightEnabled() { return Settings.Secure.getInt(crv, Settings.Secure.FLASHLIGHT_ENABLED, 0) == 1; } private void getFontSize() { float fontScale = Settings.System.getFloat(crv, Settings.System.FONT_SCALE, 0.0f); Log.e(TAG, "getHardware: fontScale = " + fontScale); List mEntries = Arrays.asList(getResources().getStringArray(R.array.entries_font_size)); List strEntryValues = Arrays.asList(getResources().getStringArray(R.array.entryvalues_font_size)); seekBar.setMax(mEntries.size() - 1); String font_size; int index = strEntryValues.indexOf(String.valueOf(fontScale)); if (index == -1) { font_size = "默认"; } else { font_size = mEntries.get(index); } // tv_font_size.setText(font_size); seekBar.setProgress(index); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { Settings.System.putFloat(crv, Settings.System.FONT_SCALE, Float.parseFloat(strEntryValues.get(i))); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private LocationClient locationClient; private void getLocation() { BDLocation bdLocation = AmapManager.getInstance().getNowMapLocation(); if (bdLocation != null) { if (bdLocation.getLocType() == BDLocation.TypeGpsLocation // GPS定位结果 || bdLocation.getLocType() == BDLocation.TypeNetWorkLocation // 网络定位结果 || bdLocation.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果 tv_location.setText(bdLocation.getAddrStr()); } else { tv_location.setText("未知"); } } else { tv_location.setText("定位失败"); } startLocation(); cl_location.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startLocation(); } }); } private void startLocation() { if (locationClient == null) { locationClient = AmapManager.getInstance().getLocationClient(); } locationClient.stop(); locationClient.start(); locationClient.registerLocationListener(new BDAbstractLocationListener() { @Override public void onReceiveLocation(BDLocation bdLocation) { switch (bdLocation.getLocType()) { case BDLocation.TypeGpsLocation:// GPS定位结果 case BDLocation.TypeNetWorkLocation:// 网络定位结果 case BDLocation.TypeOffLineLocation:// 离线定位结果 tv_location.setText(bdLocation.getAddrStr()); break; default: tv_location.setText("定位失败"); break; } } }); } private void getBrightness() { seekbar_brightness.setMax(255); //亮度 int brightness = Settings.System.getInt(crv, Settings.System.SCREEN_BRIGHTNESS, 1); seekbar_brightness.setProgress(brightness); Log.e(TAG, "getHardware: brightness = " + brightness); int gamma = BrightnessUtils.convertLinearToGamma(brightness, 1, 255); Log.e(TAG, "getHardware: gamma = " + gamma); long percentage = Math.round((((double) gamma / 65535) * 100f)); tv_brightness.setText(percentage + "%"); Log.e(TAG, "getHardware: percentage = " + percentage); seekbar_brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { Log.e(TAG, "onProgressChanged: i = " + i); Settings.System.putInt(crv, Settings.System.SCREEN_BRIGHTNESS, i); int gamma = BrightnessUtils.convertLinearToGamma(i, 1, 255); Log.e(TAG, "onProgressChanged: gamma = " + gamma); long percentage = Math.round((((double) gamma / 65535) * 100f)); Log.e(TAG, "onProgressChanged: percentage = " + percentage); tv_brightness.setText(percentage + "%"); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private AudioManager mAudioManager; private void getSound() { mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); //最大音量 int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); seekbar_sound.setMax(maxVolume); Log.e(TAG, "getHardware: maxVolume = " + maxVolume); //音量 int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); seekbar_sound.setProgress(streamVolume); Log.e(TAG, "getHardware: streamVolume = " + streamVolume); int currentVolume = (int) (((double) streamVolume / (double) maxVolume) * 100f); Log.e(TAG, "getHardware: currentVolume = " + currentVolume); tv_sound.setText(currentVolume + "%"); seekbar_sound.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { int volume = (int) (((double) i / (double) maxVolume) * 100f); tv_sound.setText(volume + "%"); mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } @Override protected void onDestroy() { super.onDestroy(); if (mWifiReceiver != null) unregisterReceiver(mWifiReceiver); } }