关于unity android防止设备休眠
1.Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//设置线程可后台运行,不会因为系统休眠而挂起
2.Screen.sleepTimeout = SleepTimeout.NeverSleep;
3.
android 保证屏幕黑屏之后线程可以继续运行
标签: androidAndroidgpsservice
2012-11-07 17:33 2356人阅读 评论(0) 收藏 举报
分类:
android(30) Android 问题解决(1)
版权声明:本文为博主原创文章,未经博主允许不得转载。
最近在做关于Android手机端gps定时定位的功能,需要每隔几秒钟将gps定位获取的经纬度上传至后台,但是发现某些手机在屏幕黑屏,进入休眠状态后,后台就没有收到定位信息了,后来通过网上查找资料,发现一旦手机在休眠的时候,手机的cpu也休眠了,创建的线程也会sleep,所以为了让手机屏幕黑屏之后,上传线程可以继续运行,就必须保存手机CPU一直处于运行状态,综合网上所查找的资料,发现可以通过使用android的PowerManager和PowerManager.WakeLock这两个类来控制,具体关于这两个类的使用可以参考:http://www.cnblogs.com/keyindex/articles/1819504.html
下面来说一下我的GPS定时定位主要思想:
1、要实现程序退出之后,仍然可以定时上传定位信息,必须采用service,service可以保持在后台一直运行,除非系统资源极其匮乏,否则一般来说service是不会被系统杀死的。
2、要实现定时上传,因为android系统自带的gps定位功能本身自带就有循环定位的功能,所以直接利用此功能即可实现定时上传了。
代码如下所示:
[java] view plain copy
- /**
- * 获取gps位置信息的service
- *
- * @author king
- *
- */
- public class MyService extends Service {
- private LocationManager locationManager;
- private PowerManager pm;
- private PowerManager.WakeLock wakeLock;
- private GPSUploadThread myThread;
- @Override
- public IBinder onBind(Intent intent) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- //创建LocationManger对象(LocationMangager,位置管理器。要想操作定位相关设备,必须先定义个LocationManager)
- locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
- //利用Criteria选择最优的位置服务
- Criteria criteria = new Criteria();
- //设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- //设置是否需要海拔信息
- criteria.setAltitudeRequired(false);
- //设置是否需要方位信息
- criteria.setBearingRequired(false);
- // 设置是否允许运营商收费
- criteria.setCostAllowed(true);
- // 设置对电源的需求
- criteria.setPowerRequirement(Criteria.POWER_LOW);
- //获取最符合要求的provider
- String provider = locationManager.getBestProvider(criteria, true);
- //绑定监听,有4个参数
- //参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种
- //参数2,位置信息更新周期,单位毫秒
- //参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息
- //参数4,监听
- //备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新
- locationManager.requestLocationUpdates(provider, 10000, 0,locationListener);// 2000,10
- }
- @Override
- public void onStart(Intent intent, int startId) {
- // TODO Auto-generated method stub
- super.onStart(intent, startId);
- //创建PowerManager对象
- pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
- //保持cpu一直运行,不管屏幕是否黑屏
- wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CPUKeepRunning");
- wakeLock.acquire();
- }
- /**
- * 实现一个位置变化的监听器
- */
- private final LocationListener locationListener = new LocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- // TODO Auto-generated method stub
- /**
- * 此处实现定位上传功能
- */
- }
- // 当位置信息不可获取时
- @Override
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- /**
- *
- */
- }
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- }
- };
- @Override
- public void onDestroy() {
- // TODO Auto-generated method stub
- // toggleGPS(false);
- if (locationListener != null) {
- locationManager.removeUpdates(locationListener);
- }
- wakeLock.release();
- super.onDestroy();
- }
- }
关于unity android防止设备休眠相关推荐
- Unity Android 之 获取系统语言(手机设备设置的系统语言)的二种方式(中文区分简体、繁体、日文)
Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 目录 Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 一.简单介绍 二.实现原理 ...
- android手机禁止休眠_Android的屏幕禁止休眠和锁屏的方法
Android的屏幕禁止休眠和锁屏的方法 Android的屏幕禁止休眠的方法 .实现这一功能的方法有两种,一种是在的Manifest.xml文件里面声明,一种是在代码里面修改的LayoutParams ...
- Unity Android 接入高德定位SDK
Unity版本 2020 第一步首先去高德开放平台注册账号然后申请Key 高德开放平台 | 高德地图API 注册好账号之后 点击控制台 然后选择管理key 新建一个应用 选择添加 然后创建一个key ...
- Unity app提高设备可用性
/ 支持 64 位架构 自 2019 年 8 月 1 日起,您在 Google Play 上发布的应用必须支持 64 位架构. 64 位 CPU 能够为您的用户提供更快.更丰富的体验.添加 64 位的 ...
- Unity Android真机测试
Unity Android真机测试 两种方法,首先在你需要debug的代码位置用Debug.log("你想要的信息") 一.wifi 1.手机连数据线,要求电脑,手机同一网段,手机 ...
- unity安卓获取设备的gpu和cpu并进行适配
unity怎么获取设备的gpu: 链接:https://docs.unity3d.com/cn/current/ScriptReference/SystemInfo.html 官方systemInfo ...
- Unity Android平台接入支付宝SDK
这篇文章前面讲的创建Android Studio工程的流程是不正确的!!! 正确的流程请参见:Unity Android平台下插件/SDK开发通用流程 最近帮一个群里的朋友接了一下支付宝的SDK,开发 ...
- Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现
Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现 目录 Unity Android 之 在 Unity 中直接调用打开其他应用apk的方法实现 一.简单介绍 二. ...
- unity android 在后台运行_Unity学习—资源管理概览
本文介绍了 Unity 常用四种默认路径,以及 AssetDataBase.Resources.AssetBundle 和目前最新的 Addressable 四种资源管理方式 文中所有 API 均以版 ...
最新文章
- AI一分钟|阿里成立“罗汉堂”;vivo微信人脸识别支付下半年商用
- 跨域请求,关于后端session会话丢失的解决办法
- 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
- 多标签分类_多标签分类文献阅读(8)
- 证明randomized quicksort的平均running time为nlgn 的数学过程
- Qt编程之对QGraphicsItem点击右键弹出菜单
- wpf中的默认右键菜单中的复制、粘贴、剪贴等没有本地化的解决方式
- 三星app图标不见了怎么恢复_手机便签的内容不见了怎么恢复?试试这款便签软件的时间轴功能...
- linux kernel directory
- android 驱动开发教程,Android驱动开发入门
- 我拍了拍Redis,被移出了群聊···
- 求两函数交点c语言,怎样求两个函数关系式的交点坐标
- 信息安全常见名词解释
- 有赞搜索系统的架构演进
- 信息与计算机科学讲座,【创新创业 计科在行动】2015级信息与计算科学专业大学生创新讲座、专业教育讲座暨学术前沿讲座专题报道...
- 【python】身份证识别
- Linux静态库与动态库的概念及制作
- Conflux 的自我进化:从 DAG 到树图| 对话伍鸣
- labview与单片机正弦信号_labview与单片机串口通信
- 基于PHP的租赁商城系统(包括数据库和后台)
热门文章
- CSS3实现立体旋转动画效果
- Java版QQ聊天工具
- 优化模型验证关键代码18:基于Mvar和getA的对偶模型构建及拓展分析
- 文华财经wh8-trend1组合-保证金20万-最大使用1.8万,年华收益21%,最大回撤9.8%
- adjacent angle_【数学几何的英语用语包括图形的名称.】作业帮
- 烤仔说元宇宙 | 游戏还是元宇宙傻傻分不清楚?
- 推荐一些2021年整理27套微信小程序的毕业设计、毕设参考作品案例
- 洛谷 P3797 妖梦斩木棒
- java奥特曼对战小怪兽_“奥特曼攻打小怪兽”java打怪升级第一步
- 2022-解决Android studio 模拟机没有网络,app接口api运行不起来的问题