增加电池,修改app名
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.BATTERY_STATS" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
|
||||
@@ -15,8 +15,11 @@ 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.SeekBar;
|
||||
@@ -32,8 +35,14 @@ import com.uiuios.aios.R;
|
||||
import com.uiuios.aios.manager.AmapManager;
|
||||
import com.uiuios.aios.utils.BrightnessUtils;
|
||||
|
||||
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;
|
||||
@@ -104,6 +113,8 @@ public class ControlActivity extends AppCompatActivity {
|
||||
registerReceivers();
|
||||
getBluetooth();
|
||||
registerBluetoothReceiver();
|
||||
getBattery();
|
||||
registerBatteryReceiver();
|
||||
getFlashlight();
|
||||
getFontSize();
|
||||
getLocation();
|
||||
@@ -119,7 +130,7 @@ public class ControlActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
if (isWifiEnabled()) {
|
||||
tv_wifi_ssid.setText(getSSID());
|
||||
tv_wifi_ssid.setText(getConnectWifiSsid());
|
||||
cl_wifi.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
} else {
|
||||
tv_wifi_ssid.setText("未连接");
|
||||
@@ -183,7 +194,7 @@ public class ControlActivity extends AppCompatActivity {
|
||||
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
|
||||
//获取当前wifi名称
|
||||
String newSSID = wifiInfo.getSSID();
|
||||
tv_wifi_ssid.setText(newSSID);
|
||||
tv_wifi_ssid.setText(newSSID.replaceAll("\"", ""));
|
||||
cl_wifi.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
}
|
||||
break;
|
||||
@@ -220,7 +231,37 @@ public class ControlActivity extends AppCompatActivity {
|
||||
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) {
|
||||
@@ -229,6 +270,109 @@ public class ControlActivity extends AppCompatActivity {
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isConnected() {
|
||||
Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
|
||||
List<BluetoothDevice> deviceList = bondedDevices.stream().filter(new Predicate<BluetoothDevice>() {
|
||||
@Override
|
||||
public boolean test(BluetoothDevice bluetoothDevice) {
|
||||
return bluetoothDevice.isConnected();
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
return deviceList.size() > 0;
|
||||
}
|
||||
|
||||
public String getBluetoothDeviceName() {
|
||||
Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
|
||||
List<BluetoothDevice> deviceList = bondedDevices.stream().filter(new Predicate<BluetoothDevice>() {
|
||||
@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<BluetoothDevice> getConnectedDevicesV1() {
|
||||
Class<BluetoothAdapter> bluetoothAdapterClass = BluetoothAdapter.class;//得到BluetoothAdapter的Class对象
|
||||
Set<BluetoothDevice> deviceSet = new HashSet<>();
|
||||
//是否存在连接的蓝牙设备
|
||||
try {
|
||||
Method method = bluetoothAdapterClass.getDeclaredMethod("getMostRecentlyConnectedDevices", (Class[]) null);
|
||||
//打开权限
|
||||
method.setAccessible(true);
|
||||
List<BluetoothDevice> list = (List<BluetoothDevice>) 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() {
|
||||
@@ -247,36 +391,37 @@ public class ControlActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action != null) {
|
||||
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("蓝牙正在打开");
|
||||
tv_bt_ssid.setText("正在打开");
|
||||
cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
break;
|
||||
case BluetoothAdapter.STATE_ON:
|
||||
tv_bt_ssid.setText("蓝牙已经打开");
|
||||
tv_bt_ssid.setText("已打开");
|
||||
cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
break;
|
||||
case BluetoothAdapter.STATE_TURNING_OFF:
|
||||
tv_bt_ssid.setText("蓝牙正在关闭");
|
||||
tv_bt_ssid.setText("正在关闭");
|
||||
cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
break;
|
||||
case BluetoothAdapter.STATE_OFF:
|
||||
tv_bt_ssid.setText("关");
|
||||
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("蓝牙设备已连接");
|
||||
tv_bt_ssid.setText(getBluetoothDeviceName());
|
||||
cl_bt.setBackground(getDrawable(R.drawable.control_background_item));
|
||||
break;
|
||||
case BluetoothDevice.ACTION_ACL_DISCONNECTED:
|
||||
tv_bt_ssid.setText("蓝牙设备已断开");
|
||||
tv_bt_ssid.setText("未连接");
|
||||
cl_bt.setBackground(getDrawable(R.drawable.control_background_item_dis));
|
||||
break;
|
||||
default:
|
||||
@@ -286,6 +431,90 @@ public class ControlActivity extends AppCompatActivity {
|
||||
}
|
||||
}
|
||||
|
||||
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 void getFlashlight() {
|
||||
if (isFlashlightEnabled()) {
|
||||
tv_flashlight_switch.setText("开");
|
||||
@@ -407,7 +636,6 @@ public class ControlActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void getBrightness() {
|
||||
seekbar_brightness.setMin(1);
|
||||
seekbar_brightness.setMax(255);
|
||||
//亮度
|
||||
int brightness = Settings.System.getInt(crv, Settings.System.SCREEN_BRIGHTNESS, 1);
|
||||
@@ -421,9 +649,12 @@ public class ControlActivity extends AppCompatActivity {
|
||||
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 + "%");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<resources>
|
||||
<string name="app_name">关怀系统OS</string>
|
||||
<string name="app_name">AIOS系统</string>
|
||||
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
|
||||
Reference in New Issue
Block a user