- 浏览: 2196879 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
共三个类:
第一个:MainForm.java
第二个:GpsManager.java
第三个:BGpsManager.java
第一个:MainForm.java
/** * <br/> * Title: MainForm.java <br/> * E-Mail: 176291935@qq.com <br/> * QQ: 176291935 <br/> * Http: iaiai.iteye.com <br/> * Create time: 2012-12-21 上午10:16:10 <br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class MainForm extends Activity { private Context mContext = this; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GpsManager.getInstance().create(mContext); BGpsManager.getInstance().create(mContext); GpsManager.getInstance().start(); BGpsManager.getInstance().start(); int[] id1 = new int[] { R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5 }; int[] id2 = new int[] { R.id.btn6, R.id.btn7, R.id.btn8, R.id.btn9, R.id.btn10 }; for (int id : id1) { Button btn = (Button) findViewById(id); btn.setOnClickListener(new btnGps_onClickListener()); } for (int id : id2) { Button btn = (Button) findViewById(id); btn.setOnClickListener(new btnBGps_onClickListener()); } } private class btnGps_onClickListener implements View.OnClickListener { public void onClick(View v) { Button btn = (Button) v; switch (btn.getId()) { case R.id.btn1: String adds = GpsManager.getInstance().getAddress(); if (null == adds || adds.length() == 0) { Toast.makeText(mContext, "获取失败", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, adds, Toast.LENGTH_SHORT).show(); } break; case R.id.btn2: Location lt = GpsManager.getInstance().getCurrentLocation(); if (null != lt) { Toast.makeText(mContext, String.format("维度:%f 经度:%f", lt.getLatitude(), lt.getLongitude()), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "获取失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn3: GpsManager.getInstance().start(); break; case R.id.btn4: GpsManager.getInstance().stop(); break; case R.id.btn5: GpsManager.getInstance().restart(); break; } } } private class btnBGps_onClickListener implements View.OnClickListener { public void onClick(View v) { Button btn = (Button) v; switch (btn.getId()) { case R.id.btn6: String adds = BGpsManager.getInstance().getAddress(); if (null == adds || adds.length() == 0) { Toast.makeText(mContext, "获取失败", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, adds, Toast.LENGTH_SHORT).show(); } break; case R.id.btn7: Location lt = BGpsManager.getInstance().getCurrentLocation(); if (null != lt) { Toast.makeText(mContext, String.format("纬度:%f 经度:%f", lt.getLatitude(), lt.getLongitude()), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "获取失败", Toast.LENGTH_SHORT).show(); } break; case R.id.btn8: BGpsManager.getInstance().start(); break; case R.id.btn9: BGpsManager.getInstance().stop(); break; case R.id.btn10: BGpsManager.getInstance().restart(); break; } } } }
第二个:GpsManager.java
/** * 通过GPS/AGPS定位(AGPS采用谷歌基站免费服务获取位置信息) <br/> * Title: GpsManager.java <br/> * E-Mail: 176291935@qq.com <br/> * QQ: 176291935 <br/> * Http: iaiai.iteye.com <br/> * Create time: 2012-12-21 上午10:16:10 <br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class GpsManager { private static String TAG = "GPS"; private LocationManager lm; // 位置管理 private MyLocationListener mll; // 位置监听 private Location currentLocation; // 当前位置 private Criteria ctr; // 定位标准 private String provider; // 最佳提供者 private boolean isCanceled; // 是否取消 private Context mContext; private Handler handMessage; private static GpsManager instance; private GpsManager() { } public static GpsManager getInstance() { if (null == instance) { instance = new GpsManager(); } return instance; } private void load() { // 获取系统服务 lm = (LocationManager) mContext.getSystemService(Activity.LOCATION_SERVICE); // 创建定位标准 ctr = new Criteria(); ctr.setAccuracy(Criteria.ACCURACY_FINE); // 设置精准度,待测试差距 ctr.setAltitudeRequired(false); // 设置是否返回海拔 ctr.setBearingRequired(false); // 设置是否返回方向 ctr.setCostAllowed(false); // 设置是否允许付费服务 ctr.setPowerRequirement(Criteria.POWER_HIGH); // 设置耗电等级 ctr.setSpeedRequired(false); // 设置是否返回速度信息 // 根据设置的定位条件,获取最佳provider对象,获取失败默认为GPS定位 provider = isNull(lm.getBestProvider(ctr, true), LocationManager.NETWORK_PROVIDER); // 创建位置监听器 mll = new MyLocationListener(); // 开启GPS状态监听 new MyGpsStatusListener().start(); // 创建消息 handMessage = new HandlerMessage(); isCanceled = true; } /** 创建定位 */ public void create(Context mContext) { if (null != this.mContext) return; this.mContext = mContext; load(); } /** 开始定位 */ public void start() { handMessage.sendEmptyMessage(0); } /** 停止定位 */ public void stop() { handMessage.sendEmptyMessage(1); } /** 重启定位 */ public void restart() { handMessage.sendEmptyMessage(2); } /** 获取地址 */ public String getAddress() { if (null == currentLocation) return null; StringBuffer sbAdds = new StringBuffer(); try { // 创建地理位置编码 Geocoder gCod = new Geocoder(mContext); List<Address> lAdds = gCod .getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(), 1); if (null == lAdds || lAdds.size() == 0 || null == lAdds.get(0)) return null; Address adds = lAdds.get(0); sbAdds.append(isNull(adds.getAddressLine(1), "")); sbAdds.append(isNull(adds.getAddressLine(2), "")); if (sbAdds.length() == 0) { sbAdds.append(isNull(adds.getAdminArea(), "")); sbAdds.append(isNull(adds.getLocality(), "")); sbAdds.append(isNull(adds.getThoroughfare(), "")); sbAdds.append(isNull(adds.getFeatureName(), "")); } } catch (Exception ex) { if (null != ex && null != ex.getMessage()) { Log.i(TAG, ex.getMessage()); } } return sbAdds.toString(); } /** 获取当前位置 */ public Location getCurrentLocation() { return currentLocation; } /** GPS状态监听 */ private class MyGpsStatusListener extends Thread { public void run() { while (true) { try { Thread.sleep(500); String newProvider = isNull(lm.getBestProvider(ctr, true), LocationManager.NETWORK_PROVIDER); // Log.i(TAG, String.format("状态:%s", newProvider)); if (!provider.equals(newProvider)) { provider = newProvider; restart(); } Thread.sleep(1000); } catch (Exception ex) { ex.printStackTrace(); } } } } private class HandlerMessage extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: // 绑定位置监听器 if (!isCanceled) return; lm.requestLocationUpdates(provider, 0, 0, mll); isCanceled = false; Log.i(TAG, "开始定位"); break; case 1: // 取消绑定位置监听器 if (isCanceled) return; lm.removeUpdates(mll); isCanceled = true; Log.i(TAG, "停止定位"); break; case 2: // 重新绑定位置监听器 if (!isCanceled) { lm.removeUpdates(mll); } lm.requestLocationUpdates(provider, 0, 0, mll); isCanceled = true; Log.i(TAG, "重启定位"); break; } } } /** 位置监听器 */ private class MyLocationListener implements LocationListener { // 位置发生变动时触发 public void onLocationChanged(Location location) { currentLocation = location; Log.i(TAG, "获取到了位置!"); } // provider终止时调用 public void onProviderDisabled(String provider) { } // provider启动时调用 public void onProviderEnabled(String provider) { } // provider状态改变时调用 public void onStatusChanged(String provider, int status, Bundle extras) { } } private String isNull(String str, String defValue) { if (null == str || str.length() == 0) return defValue; return str; } }
第三个:BGpsManager.java
/** * 使用百度移动API进行定位 编写时间<br/> * Title: BGpsManager.java <br/> * E-Mail: 176291935@qq.com <br/> * QQ: 176291935 <br/> * Http: iaiai.iteye.com <br/> * Create time: 2012-12-21 上午10:16:10 <br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class BGpsManager { // 百度API授权Key,申请地址:http://dev.baidu.com/wiki/static/imap/key/ private static final String KEY = "327BC8EEE5ACB2F00811A184AB66BEC124E34EFE"; private static String TAG = "Baidu_GPS"; private BMapManager mMapManager; private MyLocationListener mll; private Location currentLocation; // 当前位置 private boolean isCanceled; // 是否取消 private MKSearch mSearch; // 搜素模块 private Context mContext; private Handler handMessage; private String address; private static BGpsManager instance; private BGpsManager() { } public static BGpsManager getInstance() { if (null == instance) { instance = new BGpsManager(); } return instance; } private void load() { // 创建地图管理 mMapManager = new BMapManager(mContext); mMapManager.init(KEY, null); mMapManager.start(); // 创建搜索 mSearch = new MKSearch(); mSearch.init(mMapManager, new MyMKSearchListener()); // 创建位置监控器 mll = new MyLocationListener(); // 创建消息 handMessage = new HandlerMessage(); isCanceled = true; } /** 创建定位 */ public void create(Context mContext) { if (null != this.mContext) return; this.mContext = mContext; load(); } /** 开始定位 */ public void start() { handMessage.sendEmptyMessage(0); } /** 停止定位 */ public void stop() { handMessage.sendEmptyMessage(1); } /** 重启定位 */ public void restart() { handMessage.sendEmptyMessage(2); } private class HandlerMessage extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: // 绑定位置监听器 if (!isCanceled) return; mMapManager.getLocationManager().requestLocationUpdates(mll); mMapManager.start(); isCanceled = false; Log.i(TAG, "开始定位"); break; case 1: // 取消绑定位置监听器 if (isCanceled) return; mMapManager.getLocationManager().removeUpdates(mll); mMapManager.stop(); isCanceled = true; Log.i(TAG, "停止定位"); break; case 2: if (!isCanceled) { mMapManager.getLocationManager().removeUpdates(mll); mMapManager.stop(); } mMapManager.getLocationManager().requestLocationUpdates(mll); mMapManager.start(); isCanceled = false; Log.i(TAG, "重启定位"); break; } } } /** 获取地址 */ public String getAddress() { return address; } /** 获取当前位置 */ public Location getCurrentLocation() { return currentLocation; } /** 位置监视器 */ private class MyLocationListener implements LocationListener { public void onLocationChanged(Location locaiton) { if (null != currentLocation && currentLocation.getLatitude() == locaiton.getLatitude() && currentLocation.getLongitude() == locaiton.getLongitude()) return; currentLocation = locaiton; Log.i(TAG, "获取到了位置!"); // 转换坐标为地址 mSearch.reverseGeocode(new GeoPoint((int) (locaiton.getLatitude() * 1E6), (int) (locaiton.getLongitude() * 1E6))); } } /** 搜索监视器 */ private class MyMKSearchListener implements MKSearchListener { public void onGetAddrResult(MKAddrInfo res, int error) { address = null; if (error != 0) return; address = res.strAddr; } public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) { } public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) { } public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { } public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { } } }
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 627本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1100颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 993从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1168Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1004Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 839前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 929监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 800在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 949最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1327##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1115当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 778setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1507问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 767底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1782点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1370import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2314TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1549一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 865Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 932最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
百度地图API提供了多种定位方式,如网络定位、GPS定位、混合定位等,可以根据不同的场景需求选择合适的定位模式。网络定位主要依赖于基站信息,适合室内或GPS信号弱的环境;GPS定位则利用卫星信号,精度较高,但可能...
在Android系统中,GPS定位是移动应用开发中的关键部分,它允许用户获取精确的位置信息,为导航、社交、天气预报等功能提供支持。本教程将深入探讨Android GPS定位的源码实现,包括GPS定位、基站定位和WiFi定位。 一...
在Android开发中,获取GPS定位是一项基础且重要的功能,它能帮助应用提供精确的位置服务,例如导航、位置分享等。本文将深入探讨如何在Android中实现GPS定位,获取经纬度坐标。 首先,我们需要理解Android系统中的...
在MapABCAndroidApiDemos这个项目中,通常会包含一系列关于地图API的示例代码,可能包括使用GPS、WIFI和网络定位功能来显示用户当前位置、路径规划、地理编码(将地址转换为坐标)和反地理编码(将坐标转换为地址)...
总的来说,Android的GPS定位涉及多个层面,包括权限管理、定位API的使用和优化。通过封装成一个管理类,我们可以更高效地在应用中集成和控制定位功能。在实际项目中,还应根据具体需求调整和扩展这些基础概念。
在安卓平台上,集成百度地图定位服务是开发移动应用的一个常见需求。百度地图API提供了一整套定位、地图显示以及路线规划等功能,可以帮助开发者构建出功能丰富的地理位置应用。本知识点主要聚焦于从百度地图中剥离...
总之,【安卓GPS定位源码】结合了Android的Location API和ArcGIS的强大功能,提供了灵活且高效的定位解决方案。开发者可以通过理解并研究源码中的这些关键组件和逻辑,学习如何在自己的应用中实现类似的功能。这不仅...
本项目主要涉及了Android手机端的地图定位以及截图功能,利用了百度地图API,为用户提供了一个直观且便捷的地理定位服务。以下将详细介绍这个项目中的关键知识点。 1. **Android定位服务**: Android系统提供了...
总结来说,将Android的百度地图API与PhoneGap结合,可以让我们在跨平台的应用中利用百度地图的强大功能,同时保持开发的简洁性和高效性。通过合理的插件设计和通信机制,我们可以在Web层面上轻松调用地图功能,从而...
百度地图提供了两种定位模式:网络定位和GPS定位。网络定位依赖移动网络或Wi-Fi信号,而GPS定位则需要设备支持GPS硬件。通过`LocationClient`对象和相应的监听器,开发者可以实时获取定位信息。 4. **卫星图显示**...
1. **API接入**:首先,开发者需要在百度地图开放平台注册并获取API密钥(AK),这是使用百度定位服务的前提。在Demo中,这个密钥会被用于初始化定位服务。 2. **初始化定位服务**:在Android或iOS应用中,需要在...
在安卓平台上进行GPS定位开发是一项基础且重要的任务,它涉及到移动应用中的位置服务、导航、地理围栏等功能。本文将详细解析基于Java语言的安卓GPS定位源代码,并提供相关知识点。 1. 安卓权限管理: 在安卓系统...
7. **传感器和位置服务**:`android.hardware`和`android.location`,提供与设备硬件交互的能力,如GPS定位。 8. **图形和动画**:`android.graphics`和`android.animation`,用于绘制2D图形和实现动态效果。 ...
`cordova-plugin-sluiceMap`就是这样一个插件,它封装了对百度地图API的调用,使得在Cordova应用中调用地图和定位服务变得更加简单。 3. **百度定位服务**:百度地图API包含了定位服务,能够获取设备的经纬度坐标。...
《基于移动终端的GPS监控系统设计与实现》探讨的是如何构建一个使用移动设备(如手机、PDA或智能手表)作为GPS定位和信息查询工具的监控系统。传统的GPS监控系统通常仅限于“车辆-监控中心”的模式,乘客无法获取...
"Android定位"这个主题涵盖了许多关键技术点,主要包括Android系统提供的定位API、网络定位、GPS定位以及如何封装工具类来简化定位操作。下面我们将深入探讨这些知识点。 首先,Android系统提供了多种定位接口,...
在IT行业中,尤其是在移动开发领域,地图应用是一个重要的组成部分。对于在中国使用的地图应用,由于国家安全考虑,中国的地理位置信息使用了一种特殊的坐标系,通常被称为“火星坐标”或GCJ-02坐标系。这个坐标系统...
【基于Android手机的好友定位系统】的实现是利用了现代移动通信技术和GPS定位技术的结合。在Android平台上,好友定位系统能够实现用户间位置信息的实时共享,这得益于Android对GPS功能的良好支持以及网络通信技术的...