您的位置:首页 > 移动开发 > Android开发

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;
}
}

}


该示例是好友“湖南★废〤譃”提供,在这里收藏一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐