哈工大计算机科学与技术学院软件基础教研室 Android = 人 + 计算  普适环境 授课教师:李治军 综合楼 417 室 第 8 讲 Android 定位与节能 Lecture 8: Android Location and Energy.

Slides:



Advertisements
Similar presentations
3 的倍数特征 抢三十
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
哈工大计算机科学与技术学院软件基础教研室 第二部分 Android 与工程和科研 授课教师:李治军 综合楼 411 室 第 6 讲 进入 Android 内核 Lecture 6: Get Into the Android Kernels.
面向侧面的程序设计 方林博士 本文下载地址:
Sū jiào bǎn yī nián jí shù xué xià 苏 教 版 一 年 级 数 学(下) 单击页面即可演示.
第13章 繪圖與多媒體 13-1 顯示圖檔-行動相簿 13-2 音樂播放-音樂播放器 13-3 影片播放-視訊播放器
Part 2 開發Android應用程式的流程
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
UROVO—i6200 外观设计 建议零售价格:XX元 上市时间:2014年 月 12 日 目标人群:快递、物流、医院、零售、快销
不确定度的传递与合成 间接测量结果不确定度的评估
探索三角形相似的条件(2).
ArrayAdapter & Spinner
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
實驗四:單位轉換程式.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
Ch06 再談選單元件 物件導向系統實務.
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第11章 Android GPS位置服务与地图编程
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
第4章 Android生命周期.
ANDROID PROGRAMMING2.
程式設計實作.
Android + Service 建國科技大學 資管系 饒瑞佶.
第10章 儲存偏好設定、檔案與資料庫 10-1 存取偏好設定 10-2 檔案存取 10-3 關聯式資料庫與SQLite
Java程序设计 第9章 继承和多态.
第2讲 移动应用开发基础知识(二) 宋婕
二十四、感測器.
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
绿色圃中小学教育网 比例 比例的意义 绿色圃中小学教育网
第10章 GPS位置服务与地图编程.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
網路遊戲版 幸福農場168號.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
Android Application Component
JAVA 编 程 技 术 主编 贾振华 2010年1月.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
用计算器开方.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第4章 Excel电子表格制作软件 4.4 函数(一).
第二章 Java语法基础.
第16讲 相似矩阵与方阵的对角化 主要内容: 1.相似矩阵 2. 方阵的对角化.
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
金中移动抄表系统培训手册 广西金中软件有限公司 2015年8月7日.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
§2 方阵的特征值与特征向量.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第9章 BroadcastReceiver的使用
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
加速感測器 靜宜大學資管系 楊子青.
Part 8 Broadcast Receiver、Service和App Widget
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

哈工大计算机科学与技术学院软件基础教研室 Android = 人 + 计算  普适环境 授课教师:李治军 综合楼 417 室 第 8 讲 Android 定位与节能 Lecture 8: Android Location and Energy

- 2 - Android & Pervasive Computing 有了 Location 以后,我们还需要 ? 应用 Location 做点什么 ? 地图标注,地图导航,智能交通, Place-its… 功能有了,性能同样重要 … 节能、稳定、安全 对目前的智能手机而言,节能是最为重要的指标 … GPS 是显著的手 机能耗模块 ! 不用 GPS 可以定 位吗 ?

- 3 - Android & Pervasive Computing Android 如何记录电能的消耗 ? Android 用 Intent 告诉上层很多事 … public class BatteryReceiver extends BroadcastReceiver { public int batLevel; public int batScale; public void onReceive(Context context, Intent intent) { Toast.makeText(context, "BatteryReceiver", Toast.LENGTH_SHORT).show(); } 需要让系统知道我们在 Receiver 电池电量 …… 测量是许多工 作的起点 …… 不好使,据说电池电量监 听,只能在代码中注册

- 4 - Android & Pervasive Computing 也可以用程序来注册 Receiver 在 Android 中, XML 和程序可实现同样功能 … public class BatteryTestActivity extends Activity { public void onCreate() { BatteryReceiver mBatteryReceiver = new BatteryReceiver(); this.registerReceiver(mBatteryReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 这就是 receive 到以 后的那个 Toast

- 5 - Android & Pervasive Computing BatteryReceiver 接收到了什么 ? BroadcastReceiver 中最重要的函数 ? public void onReceive(Context context, Intent intent) { String action=intent.getAction(); if(action.equals(Intent.ACTION_BATTERY_CHANGED)){ batLevel=intent.getIntExtra("level", 0); batScale=intent.getIntExtra("scale", 100); } batLevel*100/batScale 剩余多少电量 String.valueOf(batLevel*100/batScale) "status" "voltage" "temperature"

- 6 - Android & Pervasive Computing 相对坐标定位 相对于若干已知位置的距离 三点定位 相对坐标位置 Cell ID 技术 : 移动终端所处的蜂窝小区 ID 是 Cell ID 常见技术 WPS(Wifi Position System): 根 据可见 Access Point 求出一个位置 基本思想是应用一些参考位置 …

- 7 - Android & Pervasive Computing 大多数时候都是优缺点并存 所以更为实用的方式是针对应用需求和特征进行 自适应调整 …… 相对坐标定位虽然节能,但其精度不高

- 8 - Android & Pervasive Computing 可以自适应的调整 GPS 采样速率 … 满足应用对精度的要求下,适当的时候关闭 GPS , 这样可以节能 … 使用 accelerometer 可以估计用户是否移动 静止的时候就不需要 打开 GPS 了 第一件事 : 读取加速度传 感器 第二件事 : 自动打开和关 闭 GPS

- 9 - Android & Pervasive Computing 如何读取 accelerometer 数值 ? SensorManager 对手机上的传感器统一管理 让我们的 Activity 成为接收 Sensor 数据的 Listener public class MyActivity extends Activity implements SensorEventListener{ private SensorManager senMgr; public void onCreate(...) { senMgr=getSystemService(SENSOR_SERVICE);} protected void onResume(){ sensors=senMgr.getSensorList(Sensor.TYPE_ALL) for(Sensor s:sensors){ TextView tv; tv.setText(s.getName()); TYPE_ACCELEROM ETER

Android & Pervasive Computing 具体实现 accelerometer 数值的读取 加速度传感器  Linux  Android  SensorEventListener  MyActivity SensorManager 让 MyActivity 侦听 SensorEvent? protected void onResume(){ senMgr.registerListener(this, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_GAME); } private float[] sampleX = new float[100];... public void onSensorChanged(int sensor, float[] values) { sampleX[pos++] = values[0];... MyActivity 传感器产生数据以后就会回调 MyActivity 的某函数 ?

Android & Pervasive Computing 接下来的工作就是一个小算法 … 对 sampleX 数组进行处理 … 一个直观想法 : 如果最近一段时间加速度变化很小 定义一个 W 时间窗口,记录 W 内加速度 值超过阈值 T 的比例,如果比例超过  public int TotalAcceByondT; if(abs(sampleX[pos]) > T) TotalAcceByondT ++; if(abs(sampleX[pos-W]) > T) TotalAcceByondT --; if(TotalAcceByondT/W >  ) …

Android & Pervasive Computing 在程序中打开和关闭 GPS 想一想应该仍然是那个 LocationManager… locationManager.setTestProviderEnabled(Contex t.LOCATION_SERVICE, false); 同样,将 WiFi 打开、关闭也很简单 wifiManager = (WifiManager) this.getSystemSer vice(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(false); //wifiManager.setWifiEnabled(true); 仍然是 : 有了 Android 提供的那些 Manager ,应用 编程很容易

Android & Pervasive Computing Wifi 可以帮助我们实现定位 : WPS Wifi 如何实现定位 ? 将一个可见的 Access Point 列表转化成一个位置 (1) 从 Radio beacons 那里 获得信息 (beacon 的 ID) (2) 有一个保存 beacons 位 置信息的 databases (3) 定位 收到 SSID ,说明在 通信半径内

Android & Pervasive Computing 获取 Wifi Beacon 的位置 得到 Wifi 信号的强度、名字等 ? WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); wifiInfo.getSSID(); // 得到 SSID 号, 相当于名字 wifiinfo.getRssi(); // 获取 RSSI, 接受信号强度指示 WifiManager RSSI = - (10nlog 10 d + A) 实际结果 : 干扰,多径

Android & Pervasive Computing 获取能扫描到的一堆 Wifi Beacons 应该仍然是 WifiManager… wifiReceiver = new WifiReceiver(); registerReceiver(wifiReceiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); wifiManager.startScan(); class WifiReceiver extends BroadcastReceiver { public void onReceive() { wifiList = wifiManager.getScanResults(); 有 startScan() 函数

Android & Pervasive Computing 不用 GPS 、 WPS ,照样可以定位 … 人群中有些人知道位置,这些点称为锚点,和锚 点的距离可以用通信 ( 蓝牙 ) 测量获得 X(:, i, t) 是节点 i 的位置向量 A(:, a, t) 是锚点 a 的位置向量 D ij (t) = ||X(:, i, t) − X(:, j, t)|| 2 2 ( 欧氏距离的平方 ) C ia (t) = ||X(:, i, t) − A(:, a, t)|| 2 2 lb(ub) 下 ( 上 ) 界 ; eq 均值, 这些距 离就用 RSSI 测量得出 有 D ij lb (t) 、 D ij ub (t) 、 D ij eq (t) 和 C ia lb (t) 、 C ia ub (t) 、 C ia eq (t) 等测量值 Crowd 计算 + 数学 …

Android & Pervasive Computing 定位变成了一个纯粹的数学问题 已知 A(:, a, t) ,求 X(:, i, t) 使得下面的 f(X,t) 最小 f(X,t) =  ij (D ij (t)-D ij eq (t)) 2 +  ij min{0, D ij (t)-D ij lb (t)} 2 +  ij max{0, D ij (t)-D ij ub (t)} 2 +  ia (C ia (t)-C ia eq (t)) 2 +  ia min{0, C ia (t)-C ia lb (t)} 2 +  ia max{0, C ia (t)-C ia ub (t)} 2 f(X,t) 是我们定位 结果的误差 数学的智慧就是应用智慧来发现和利用自然规律

Android & Pervasive Computing 需要利用一些人移动的统计规律 人的移动是有规律的 … 定义一个坐标矩阵 : M[2n, t max ] n 节点数, t max 观测时间 M(i, t) 和 M(i+n, t) 是 t 时刻节点 i 的 x 坐标和 y 坐标 如果节点匀速运动 : M(:, t) = z + t  v M 的秩 (rank)=2 节点不总匀速,但往往是匀 速移动一段时间变到另一个 速度,在匀速移动一段时间 s i 是特征值  i=1 K s i 2 si2si2

Android & Pervasive Computing 人的移动在时间上有连续性 上面给出的特征称为 low rank ,还有一个规律是 Temporal stability 定义一个 NVC(normalized velocity change) ||v(i,t) – v(i,t-1)|| 2 mean i,t ||v(i,t)|| 2 大于 50% 的 t 其 NVC=0 仍然是匀速运动

Android & Pervasive Computing 带入规律让数学模型更趋近于真实 定位的结果应该和节点移动特征相吻合 X(:, i, t) 是否满足 temporal stability constraints? g(X) =  k,i,t (X(k,i,t-1) + X(k,i,t+1) – 2X(k,i,t)) 2 X(:, i, t) 是否满足 low-rank constraints? h(X,U,V) = ||M - U  V T || 2 2 M 是由 X 写成的, U 和 V 是矩阵 M 的分解,其中 U 是一个 N*r 的矩阵,V 是 一个 t max *r 的矩阵 已知 A(:, a, t) 求 X(:, i, t) 使得 下面的惩罚函数最小 min C =  t f(X,t) +   g(X) +   h(X,U,V)

Android & Pervasive Computing 数学模型 + 数学工具 … 开始求解这个优化问题 基本思想 : 从一个 X(:, i, t) 初值开始,通过迭代找到极 大值 ( 或最大值 ) ,著名的方法有梯度下降法等 可以采用的 Newton’s method( 牛顿迭代法 ) 无约束最优化问题  i+1 =  i – f(  i )/f (  i )  就是 X

Android & Pervasive Computing Lecture 8 总结 定位需要充分考虑节能 Android 电池监控 WiFi 定位 Wifi AP 扫描,测 SSID ,测 RSSI ,测 CellID… 锚点定位 Crowd 计算 + 数学