android使用Broadcast的一个例子
2014-03-24 11:27
429 查看
package com.siqing.hdgcarclient.server; import com.baidu.mapapi.BMapManager; import com.siqing.hdgcarclient.core.AppContext; import com.siqing.hdgcarclient.core.CarClientApplication; import com.siqing.hdgcarclient.core.Config; import com.siqing.hdgcarclient.core.RequestParaBuilder; import com.siqing.hdgcarclient.model.common.GpsPoint; import com.siqing.hdgcarclient.model.input.RequestPara; import com.siqing.hdgcarclient.service.GeneralService; import com.siqing.hdgcarclient.utils.GpsUtil; import com.siqing.hdgcarclient.utils.GpsUtil.LocInfo; import com.siqing.hdgcarclient.utils.LogUtil; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.location.Location; import android.os.AsyncTask; import android.os.Bundle; public class LocateServer extends BroadcastReceiver { private static String TAG = "LocateServer"; Context mcontext; GpsUtil gpsUtil; @Override public void onReceive(Context context, Intent intent) { // LogUtil.e(TAG, "获取当前坐标"); mcontext=context; new LocateTask().execute(); } public void startLocateServer(Context context) { //1.判断app是否已经初始化及 // CarClientApplication app=(CarClientApplication) context.getApplicationContext(); // if(!app.readAppContext().isInitialization() || !app.readAppContext().isBindCar())return; AppContext appContext=AppContext.getInstance(context); if(!appContext.isInitialization() || !appContext.isBindCar())return; Intent intent = new Intent(context, LocateServer.class); PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); long firstime = System.currentTimeMillis() + 5000; AlarmManager am = (AlarmManager) context .getSystemService(context.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, firstime, Config.RefreshLocTime, sender); } public void stopLocateServer(Context context) { Intent intent = new Intent(context, LocateServer.class); PendingIntent sender = PendingIntent .getBroadcast(context, 0, intent, 0); AlarmManager alarm = (AlarmManager) context .getSystemService(context.ALARM_SERVICE); alarm.cancel(sender); } class LocateTask extends AsyncTask<Void, Void, LocInfo> { @Override protected void onPostExecute(LocInfo result) { super.onPostExecute(result); Intent intent1 = new Intent(); intent1.setAction(Config.GPS_REFRESH); intent1.putExtra("point-lng",result.lng); intent1.putExtra("point-lat",result.lat); intent1.putExtra("point-dir", result.dir); // Bundle bundle = new Bundle(); // bundle.putSerializable("point", result); // intent1.putExtras(bundle); mcontext.sendBroadcast(intent1); } @Override protected LocInfo doInBackground(Void... params) { CarClientApplication app = (CarClientApplication)mcontext.getApplicationContext(); if (app.gpsUtil == null) { LogUtil.e(TAG, "error!"); } LocInfo locinfo= app.gpsUtil.getLocation(); if(locinfo==null) { LogUtil.e(TAG, "获取gps坐标失败!"); } else { Config.number++; if(Config.number==8){ Config.number=0; } if(Config.number==0){ Location gpsloc=app.gpsUtil.getGpsLocation(); GpsPoint gpsPoint=new GpsPoint(); gpsPoint.blng=locinfo.lng; gpsPoint.blat=locinfo.lat; if(gpsloc!=null) { gpsPoint.lng=gpsloc.getLongitude(); gpsPoint.lat=gpsloc.getLatitude(); } AppContext appContext= AppContext.getInstance(mcontext); appContext.setGpsPoint(gpsPoint); //AppContext.setAppContext(mcontext, appContext); appContext.saveToDb(); if(appContext.isNeedPostGps()) { //提交至服务器 RequestPara<GpsPoint> para=new RequestPara<GpsPoint>() {}; RequestParaBuilder.Builder(para,mcontext); para.data=gpsPoint; GeneralService.CarReportGps(para); } } } return locinfo; } } }
该示例是好友“湖南★废〤譃”提供,在这里收藏一下。
相关文章推荐
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- 一个android中使用sax解析xml的例子
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- 使用Android-studio简单实现一个NDK的例子
- Android游戏引擎《Rokon》学习笔记六:一个使用Box2D的Rokon小例子:Rokon Donate
- android中Contex的使用例子(在一个普通类中用context去开开启一个activity)
- Android笔记--handler的使用的一个例子
- 一个简单的例子解析android中Handler线程和普通Thread的使用
- [Android]一个简单使用Handler做Timer的例子
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三).so文件编译过程问题的解决
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- android 一个小例子说明handler和AlertDialog的简单使用
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作
- 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(三)
- Android BroadcastReceiver使用详解
- JSP中使用java Bean的一个例子
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)