android 工具类utils
包含以下功能:
1、8对应功能 唤醒屏幕并重启手机 需要将app放到源码里面编译 将app变成系统应用
1.通过广播重启手机 rebootPhoneByBroadcast
2.调用拨号 callDial
3.调用发短信 sendMessage
4.调用浏览器 callBrowser
5.调用相册 callAlbum
6.调用照相机 callCamera
7.获取gps位置 经纬度 getLocation
8.延时唤醒屏幕并重启手机wakeupAndReboot
首先在AndroidManifest中添加权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.REBOOT"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
/**
* Created by gkp on 3/16/17.
*/
public class Utils {
//###1.通过广播重启手机 rebootPhoneByBroadcast 需要
public static void rebootPhoneByBroadcast(Context context, String TAG) {
Log.d(TAG, "gkp 重启手机");
Intent intent = new Intent(Intent.ACTION_REBOOT);
intent.putExtra("nowait", 1);
intent.putExtra("interval", 1);
intent.putExtra("window", 0);
context.sendBroadcast(intent);
}
//2.调用拨号 callDial
public static void callDial(Context context) {
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("tel:10086"));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
//3.调用发短信 sendMessage
public static void sendMessage(Context context) {
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.setType("text/plain");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(Intent.EXTRA_TEXT, "我正在做测试");
context.startActivity(i);
}
//4.调用浏览器 callBrowser
public static void callBrowser(Context context) {
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://www.baidu.com"));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
//5.调用相册 callAlbum
public static void callAlbum(Context context) {
Intent i = new Intent();
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
//6.调用照相机 callCamera
public static void callCamera(Context context) {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), "camera.jpg")));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
//7.获取gps位置 经纬度 getLocation
public static String getLocation(final Context context, String TAG) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
List<String> list = lm.getProviders(true);
String provider = null;
if (list.contains(LocationManager.GPS_PROVIDER)) {
provider = LocationManager.GPS_PROVIDER;
} else if (list.contains(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(context, "请检查网络或GPS是否打开", Toast.LENGTH_LONG).show();
return null;
}
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "gkp getLocation: 请添加对应权限");
return null;
}
Location location = lm.getLastKnownLocation(provider);
String result = null;
if (location != null) {
//获取当前位置,这里只用到了经纬度
result = "纬度为:" + location.getLatitude() + ",经度为:"
+ location.getLongitude();
}
lm.requestLocationUpdates(provider, 2 * 1000, 2, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
String result = null;
if (location != null) {
//获取当前位置,这里只用到了经纬度
result = "纬度为:" + location.getLatitude() + ",经度为:"
+ location.getLongitude();
}
SpUtil.saveString(context, "location", result);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
return result;
}
//8.延时唤醒屏幕并重启手机wakeupAndReboot
private void wakeupAndReboot() {
//开机15分钟后唤醒屏幕,
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.d(TAG, "唤醒屏幕");
mPowerManager.wakeUp(SystemClock.uptimeMillis());
}
}, 15*60 * 1000);
//唤醒屏幕5分钟后重启手机
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
rebootPhoneBroadcast();
}
}, 20*60*1000);
}
}