我在做的一个功能是过几分钟就提交一次坐标到服务器,进行保存,跟踪司机地理位置。
主线程:
private static final String CONTEXT = Context.LOCATION_SERVICE; // 环境
LocationManager locationManager;
/** 获得LocationManager实例 */
public LocationManager getLocationManager() {
return (LocationManager) getSystemService(CONTEXT);
}
onCreate方法:
{
Thread t = new Thread(new getLocation(provider));
t.setDaemon(true);// 设置为后台线程
t.start();
}
Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
LocationManager l = getLocationManager();
try {
String provider1 = getProvider(getLocationManager());
TimeUnit.MICROSECONDS.sleep(100);
l.requestLocationUpdates(provider1, 0, 0, locationListener);
Location location = l.getLastKnownLocation(provider1);
//打印效果。
System.out.println(location.getLatitude()
+ "{}{}{}{}{}{}{}{}___");
// 为绘制标志的类设置坐标,非常重要,刷新Location
mapOverlay.setLocation(location);
Thread t = new Thread(new getLocation(provider1));
t.start();
Thread.yield();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.handleMessage(msg);
}
};
private class getLocation implements Runnable {
@Override
public void run() {
Message m = new Message();
h.handleMessage(m); // Handler的实例
Thread.yield();
}
}
getLocation 和handler 这2个线程,让他们相互调用,形成死循环状态。
mapOverlay.setLocation(location); 这个方法太重要了。。。
程序总是出现在线程错误,不知道哪位大侠能够指点下原因:
下面是截图
- 大小: 50.2 KB
分享到:
相关推荐
这为我们提供了学习多线程编程和网络请求处理的机会。 综上所述,通过分析"Android程序研发源码Android 沈阳公交源码.zip",开发者不仅可以深化对Android基础知识的理解,还能掌握到地图服务、定位服务、数据库操作...
这可能涉及到`postInvalidate()`或`runOnUiThread()`等方法,确保在UI线程中安全地刷新视图。 7. **权限管理**:由于使用了传感器,应用需要在AndroidManifest.xml文件中声明`<uses-permission>`,例如`ACCESS_FINE...
这个小案例涵盖了Android开发中的多个关键知识点,包括定位服务、网络请求、数据解析以及用户界面设计。下面将详细讲解这些核心内容。 1. 定位服务:在Android中,我们通常使用`FusedLocationProviderClient`来获取...
5. **异步处理与数据刷新**: 为了确保用户界面的流畅性,数据的获取和更新通常在后台线程中进行。Android的AsyncTask或者现代的LiveData和ViewModel组件可以用于实现这一目标。 6. **UI设计与Material Design**: ...
- AsyncTask:简单的异步任务可以使用Android内置的AsyncTask类,它提供了一种在后台线程执行任务并在UI线程更新结果的方式。 - Handler/Looper:对于更复杂的任务,可能需要使用Handler和Looper机制,以防止在...
- 需要处理权限问题,确保应用获得了`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`权限。 2. **城市列表**: - 城市列表通常来源于服务器数据库或者本地资源文件,如CSV或JSON格式的数据。 - 数据结构设计...
为了获取用户当前的位置以便查询当地天气,可以使用Android的Location API或Google Play Services的FusedLocationProviderClient。获取到位置信息后,可以将其作为参数发送到天气API接口。 6. **异步处理**: ...
通过这个自定义时钟的例子,开发者可以学习到Android UI编程的基础,包括视图绘制、时间同步、多线程更新以及事件处理等关键技能。这些知识对于开发任何复杂的Android应用都是至关重要的。同时,自定义时钟也是提升...
6. **多线程处理**:由于传感器数据的获取和UI更新可能会影响主线程的性能,所以通常需要在后台线程处理传感器数据,然后通过Handler或Runnable将更新推送到UI线程。 7. **权限管理**:在AndroidManifest.xml中,...
7. **权限管理**:在AndroidManifest.xml中,需要声明使用传感器的权限,例如 `<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />`,因为访问传感器可能涉及到位置信息。 8. **线程管理...
在Android应用开发中,12306列车车次余票查询是一个常见的需求,它涉及到网络请求、数据解析、UI展示等多个技术环节。这个压缩包文件"Android应用源码12306列车车次余票查询.zip"很可能包含了一个完整的Android项目...
在AndroidManifest.xml中声明`android.permission.ACCESS_FINE_LOCATION`或`android.permission.BODY_SENSORS`权限,并在运行时请求用户授权。 8. **调试与测试** 在开发过程中,使用Android模拟器和实际设备进行...
通过这个"简单天气预报demo",开发者可以学习到如何集成网络请求、解析JSON、处理地理位置、更新UI等多个Android开发核心技能,同时也能了解如何将这些组件整合到一个实际的应用中。对于初学者来说,这是一个很好的...
- **多线程和并发**:研究如何在Android环境中管理多线程和并发。 - **权限管理**:查看权限是如何在Android系统中被控制和实施的。 - **硬件适配**:了解Android如何通过HAL与不同硬件厂商的设备进行交互。 - **...
6. **下拉刷新与上拉加载(Pull-to-Refresh & Infinite Scroll)**:使用SwipeRefreshLayout实现下拉刷新,结合LinearLayoutManager和EndlessRecyclerViewScrollListener实现列表的无限滚动。 7. **异步任务...
在Android平台上,开发一款指南针应用涉及到多个关键知识点,这些知识点包括但不限于传感器API的使用、图形界面设计、坐标转换以及实时数据更新等。本压缩包中的"Android应用源码之指南针定位源码"提供了实现这些...
在Android平台上,开发一个天气预报程序是一个常见的任务,它涉及到多个技术点,包括网络请求、数据解析、UI设计以及本地存储等。以下是对这个“android一个天气预报程序代码”所涉及知识点的详细解释: 1. **网络...
如果应用需要定位服务以提供本地天气,还需要`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`权限。源码中的`AndroidManifest.xml`文件会声明这些权限。 5. **定位服务**: - 使用Google Play Services的...
4. **定位服务**:利用Android系统的Location API,可以获取用户的地理位置信息,从而自动显示所在城市的天气。同时,也可以提供手动输入城市名或搜索城市的功能。 5. **天气API集成**:诸如OpenWeatherMap、...
Android提供了Location API来获取设备的位置信息,可以与天气数据相结合,显示用户当前所在地的天气。 最后,考虑到性能和用户体验,开发者可能还会涉及动画和过渡效果的实现,利用Android的Animation API或...