《Android程序设计及实践》课件第8章 Android特色开发_第1页
《Android程序设计及实践》课件第8章 Android特色开发_第2页
《Android程序设计及实践》课件第8章 Android特色开发_第3页
《Android程序设计及实践》课件第8章 Android特色开发_第4页
《Android程序设计及实践》课件第8章 Android特色开发_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-1-传感器的使用地图定位Activity当作AlertDialog显示Fragment的使用为ActionBar添加Tabs本章目标传感器的使用传感器能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息按照一定规律变换成为电信号或其他所需形式的信息输出,满足对信息的传输、处理、存储、显示、记录和控制等要求,传感器是实现自动检测和自动控制的首要环节。Sensor类用于描述每个硬件传感器的属性-2-类型常量功能描述Sensor.TYPE_ACCELEROMETER加速传感器,它沿着三个坐标轴返回当前的加速度Sensor.TYPE_GYROSCOPE陀螺仪传感器,在三个坐标轴上以角度为单位返回当前设备方向Sensor.TYPE_LIGHT亮度传感器,以lux(勒克斯)为单位返回单个值的环境光传感器,描述了环境光强度,用于动态控制屏幕亮度Sensor.TYPE_MAGNETIC_FIELD地磁传感器,沿着三个坐标轴确定当前的磁场Sensor.TYPE_ORIENTATION方向传感器,返回设备的方向Sensor.TYPE_PRESSURE压力传感器,以kilopascals(千帕斯卡)为单位返回单个值的压力传感器,该值表示了在当前设备上所施加的压力Sensor.TYPE_PROXIMITY近程传感器,以米为单位指示设备与目标对象之间距离的邻近距离传感器,如何选择目标对象以及支持的距离,将取决于邻近距离探测器的硬件实现。邻近距离传感器的一个典型的用法是在用户的耳朵承受该设备时进行检测并自动调整屏幕的亮度或者初始化一个语音命令Sensor.TYPE_TEMPERATURE温度传感器,以摄氏度为单位返回温度的温度计,所返回的温度可以是周围房间温度、设备电池温度或者远程传感器温度SensorManagerSensorManager是传感器的一个综合管理类。-3-方法功能描述getSensorList()获得指定传感器类型的所有可用的传感器列表registerListener()注册一个传感器监听器unregisterListener()注销一个传感器监听器getDefaultSensor()获得默认的传感器对象getInclination()得到地磁传感器倾斜角的弧度值getOrientation()得到设备旋转的方向常量.功能描述SENSOR_DELAY_FASTEST以最快速的更新速率SENSOR_DELAY_GAME选择一个适合在控制游戏中使用的更新速率SENSOR_DELAY_NORMAL默认更新速率SENSOR_DELAY_UI指定一个适于更新UI功能的速率SENSOR_STATUS_ACCURACY_LOW传感器的精确度很低并且需要校准SENSOR_STATUS_ACCURACY_MEDIUM传感器的数据具有平均精确度,校准可能会改善阅读效果SENSOR_STATUS_ACCURACY_HIGH传感器使用的是最高精确度SENSOR_STATUS_UNRELIABLE传感器数据不可靠,需要校准传感器且当前不能读取数据SensorManagersm=(SensorManager)getSystemService(SENSOR_SERVICE);List<Sensor>sensors=sm.getSensorList(Sensor.TYPE_ORIENTATION);List<Sensor>sensors=sm.getSensorList(Sensor.TYPE_ALL);SensorEventListenerSensorEventListener是传感器监听接口,包括两个方法onSensorChanged(SensorEventevent)方法:监控传感器值的改变,该方法的参数是一个SensorEvent对象,该对象具有sensor(传感器对象)、accuracy(精确度)、values(新值)、timestamp(事件)4个描述传感器事件的属性。onAccuracyChanged(Sensorsensor,intaccuracy)方法:响应传感器精准度的变化,该方法具有两个参数:第1个参数表示传感器;第2个参数是传感器精准度的反馈值。-4-//注册一个传感器监听器sm.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);//注销传感器监听器sm.unregisterListener(this);描述8.1地图定位-百度地图SDK由于传统GPS定位具有启动时间长、室内可能无法定位等弊端,因此为了使用户得到更好的体验,实际开发中应尽量避免使用传统GPS定位方法。本节将介绍如何使用百度地图SDK实现定位功能。-5-百度地图SDK介绍地图:提供地图(2D、3D)的展示和缩放、平移、旋转、改变视角等地图操作;地理编码:提供地理坐标和地址之间相互转换的能力;线路规划:支持公交信息查询、公交换乘查询、驾车线路规划和步行路径检索;覆盖物:提供多种地图覆盖物(自定义标注、几何图形、文字绘制、地形图图层、热力图图层等),满足开发者的各种需求;定位:采用多种定位模式,使用定位SDK获取位置信息,使用地图SDK我的位置图层进行位置展示;导航:支持调启百度地图导航和Web导航来满足用户对导航功能的需求除此之外,还有POI检索、LBS云检索、离线地图和其他功能等。地图定位-百度地图SDK开发百度地图SDK的准备工作:登录百度地图开放平台注册百度开发者帐号(/map/index.php)申请开发百度地图SDK所使用的密钥获取SDK开发文档与支持参考开发文档与百度地图官方提供的DEMO进行开发-6-注意:在测试百度地图时,模拟器可能无法显示地图,请使用真机进行测试;直接运行此项目会无法显示地图,这是因为申请密钥时填写的安全码组成方式为“数字签名+;+包名”,数字签名可能不同,因此还是建议自行申请密钥。特殊的对话框有时我们希望能够展示更加复杂的Dialog,并且能够对其中的控件进行灵活的事件处理等操作,虽然使用AlertDialog同样能够实现,但是相对于Activity的灵活性来说,还是有所不足。本节主要介绍如何将Activity作为Dialog显示。-7-将Activity作为Dialog显示,主要分为以下几个步骤:编写主题样式(为了保留Android4.0主题样式,需要编写此文件,否则可省略)在AndroidManifest.xml中对此Activity定义主题样式获取SDK开发文档与支持为Activity编写layout布局文件Fragment简介1-8-Fragment(碎片)是Android3.0时添加的新控件,Fragment和Activity十分相似,甚至可以通过简单的修改Activity的父类和部分生命周期方法即可轻松地将Activity转为Fragment。Fragment还提供了灵活的页面布局方式,可以将多个Fragmen合并放到同一个Activity中,也可以同一个Fragment重用到多个Activity中,Fragment和Activity非常相似,具有自己的生命周期,可以接收自己的事件,并且允许用户动态的对其进行添加、删除和替换操作。Fragment不能单独显示,需要依附一个Activity才能显示,而且他的生命周期直接受到所依附的Activity生命周期影响。Fragment简介2-9-一个新闻应用,主要有两个页面,分别为FragmentA和FragmentB,FragmentA是新闻列表页面,FragmentB是新闻详情页,点击FragmentA中的条目,内容会在FragmentB中展示。如果在平板电脑上应用,那么我们可以将这两个Fragment同时显示到一个Activity中,从而使页面更加丰富,而且用户体验简单方便;如果是应用到更小屏幕的手机,那么就需要两个页面分别来展示列表和内容。Fragment生命周期-10-Activity中添加Fragment-11-向Activity添加Fragment有两种方式通过activity的layout布局文件添加<fragmentandroid:id="@+id/fragmenta"android:name="com.dh.ch08_8d4.MyFragmentA"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"/>通过代码动态添加FragmentMyFragmentAfragmentA=newMyFragmentA();MyFragmentBfragmentB=newMyFragmentB();FragmentManagermanager=getFragmentManager();FragmentTransactiontransaction=manager.beginTransaction();transaction.add(R.id.fl_fragmenta_activity,fragmentA);transaction.add(R.id.fl_fragmentb_activity,fragmentB);mit();ActionBar扩展-Tabs-12-目前各种各样的Tabs(选项卡)应用非常广泛,它最大的用途就是实现多个页面来回切换,使用起来非常便捷,ActionBar提供了一个更加智能,更加统一的Tabs,他可以实现自动匹配屏幕大小,因此,也是官方推荐的一种展示方式。ActionBar扩展-Tabs-13-在ActionBar的Tabs中,每个Tab对应一个Fragment,因此首先需要创建3个FragmentprotectedclassMyTabListenerimplementsTabListener{ ... publicMyTabListener(Activityact,Stringtag,Class<?>fragmentCls){…} //Tab被选中时调用

@Override publicvoidonTabSelected(Tabarg0,FragmentTransactionft){…} //Tab取消选中

@Override publicvoidonTabUnselected(Tabarg0,FragmentTransactionft){…} //Tab被重新选中

@Override publicvoidonTabReselected(Tabarg0,FragmentTransactionft){…}}在MyActionBarActivity.java中添加内部类MyTabListener用作监听Tabs点击事件ActionBar扩展-Tabs-14-//显示ActionBarTabsactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//向Tabs中添加Fragment并进行监听Tabtab=actionBar.newTab().setText("AFragment").setTabListener( newMyTabListener(this,"a",AFragment.class));actionBar.addTab(tab);在MyActionBarActivity.java的onCreate()中添加Tab-15-小结:Android对每个设备的传感器实现进行了抽象,Sensor类用于描述每个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论