利用百度地圖進行地圖定位並實時上傳

weixin_34402090發表於2013-03-02

Location.java

package com.example.baiduloctest;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

import com.baidu.location.*;

import android.app.Application;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

public class Location extends Application {
	public LocationClient mLocationClient = null;
	public TextView mTv;
	private String mData;  
	public Handler hd = null;
	public MyLocationListenner myListener = new MyLocationListenner();
	@Override
	public void onCreate() {
		mLocationClient = new LocationClient( this );
		mLocationClient.registerLocationListener( myListener );
		super.onCreate();
		
	}

	public class MyLocationListenner implements BDLocationListener {
		@Override
		public void onReceiveLocation(BDLocation location) {
			if (location == null)
				return ;
			StringBuffer sb = new StringBuffer(256);
			sb.append("time : ");
			sb.append(location.getTime());
			sb.append("\nerror code : ");
			sb.append(location.getLocType());
			sb.append("\nlatitude : ");
			sb.append(location.getLatitude());
			sb.append("\nlontitude : ");
			sb.append(location.getLongitude());
			sb.append("\nradius : ");
			sb.append(location.getRadius());
			if (location.getLocType() == BDLocation.TypeGpsLocation){
				sb.append("\nspeed : ");
				sb.append(location.getSpeed());
				sb.append("\nsatellite : ");
				sb.append(location.getSatelliteNumber());
			} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
				sb.append("\naddr : ");
				sb.append(location.getAddrStr());
			}
			sb.append("\nsdk version : ");
			sb.append(mLocationClient.getVersion());
			sb.append("\nisCellChangeFlag : ");
			sb.append(location.isCellChangeFlag());
			final String url = "http://casic.sinaapp.com/trace.php?ac=add";
	          
	        final Map<String,String> params = new HashMap<String,String>();
	        final String longtitude;
	        final String latitude;
	        longtitude = ""+location.getLongitude();
	        latitude = ""+location.getLatitude();
	        params.put("longtitude", longtitude);
	        params.put("latitude", latitude);
	        params.put("telephone","18600232563");
	        new Thread(){
	             public void run(){
	              String msgStr=HttpUploadUtil.postWithoutFile(url,params); 
					Bundle b = new Bundle();
					try {
						JSONObject jsonObject = new JSONObject(msgStr);
						String str = MyConverter.unescape(jsonObject.getString("msg"));
						b.putString("msg", str);
					} catch (JSONException e) {
						b.putString("msg", "轉換異常");
						e.printStackTrace();
					}
					Message msg = new Message();
					msg.what = 1;
					msg.setData(b);
					hd.sendMessage(msg);
	             }
	        }.start();
			logMsg(sb.toString());
		}
		
		public void onReceivePoi(BDLocation poiLocation) {
			if (poiLocation == null){
				return ; 
			}
			StringBuffer sb = new StringBuffer(256);
			sb.append("Poi time : ");
			sb.append(poiLocation.getTime());
			sb.append("\nerror code : "); 
			sb.append(poiLocation.getLocType());
			sb.append("\nlatitude : ");
			sb.append(poiLocation.getLatitude());
			sb.append("\nlontitude : ");
			sb.append(poiLocation.getLongitude());
			sb.append("\nradius : ");
			sb.append(poiLocation.getRadius());
			if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){
				sb.append("\naddr : ");
				sb.append(poiLocation.getAddrStr());
			}
			if(poiLocation.hasPoi()){
				sb.append("\nPoi:");
				sb.append(poiLocation.getPoi());
			}else{				
				sb.append("noPoi information");
			}
			final String url = "http://casic.sinaapp.com/trace.php?ac=add";
	        final Map<String,String> params = new HashMap<String,String>(); 
	        final String longtitude;
	        final String latitude;
	        longtitude = ""+poiLocation.getLongitude();
	        latitude = ""+poiLocation.getLatitude();
	        params.put("longtitude", longtitude);
	  	    params.put("latitude", latitude);
	        params.put("telephone","18600232563");
	        new Thread(){
	             public void run(){
	              String msgStr=HttpUploadUtil.postWithoutFile(url,params); 
					Bundle b = new Bundle();
					try {
						JSONObject jsonObject = new JSONObject(msgStr);
						String str = MyConverter.unescape(jsonObject.getString("msg"));
						b.putString("msg", str);
					} catch (JSONException e) {
						b.putString("msg", "轉換異常");
						e.printStackTrace();
					}
					Message msg = new Message();
					msg.what = 1;
					msg.setData(b);
					hd.sendMessage(msg);
	             }
	        }.start();
			logMsg(sb.toString());
		}
		public void logMsg(String str) {
			try {
				mData = str;
				if ( mTv != null )
					mTv.setText(mData);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

 LocTestActivity.java

package com.example.baiduloctest;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;

public class LocTestActivity extends Activity {
	private LocationClient mLocClient;
	private TextView mTv = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loc_test);
        mLocClient = ((Location)getApplication()).mLocationClient;
        mTv = (TextView)findViewById(R.id.txtInfo);
        setLocationOption();
        ((Location)getApplication()).mTv = mTv;
        ((Location)getApplication()).hd = hd;
        mLocClient.start();
    }
	@SuppressLint("HandlerLeak")
	Handler hd = new Handler(){
		@Override
		public void handleMessage(Message msg){
			super.handleMessage(msg);
			Bundle b;
			b = msg.getData();
			String msgStr = b.getString("msg");
			switch(msg.what){
				case 1:
					b = msg.getData();
					msgStr = b.getString("msg");
					Toast.makeText(LocTestActivity.this, msgStr, Toast.LENGTH_LONG).show();
					break;
				default:
					Toast.makeText(LocTestActivity.this, "出錯鳥~~", Toast.LENGTH_LONG).show();
			}
		}
	};
	//設定相關引數
	private void setLocationOption(){
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true);								//	開啟G
		option.setCoorType("bd09ll");							//	設定座標型別
		option.setServiceName("com.baidu.location.service_v2.9");
		option.setPoiExtraInfo(true);	
		option.setAddrType("all");
		option.setScanSpan(15000);
		option.setPriority(LocationClientOption.GpsFirst);      //	設定網路優先
		option.setPoiNumber(10);
		option.disableCache(true);
		mLocClient.setLocOption(option);
	}
	@Override
	public void onDestroy() {
		mLocClient.stop();
		super.onDestroy();
	}
}

 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.baiduloctest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application  android:name="com.example.baiduloctest.Location"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.baiduloctest.LocTestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="com.baidu.location.f" android:enabled="true"
			android:process=":remote">
	<!--  		<intent-filter>
				<action android:name="com.baidu.location.service_v2.9"></action>
			</intent-filter>-->
		</service>
    </application>
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
	<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
	<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
	<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
	<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
	<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> 
	<uses-permission android:name="android.permission.INTERNET" />
</manifest>

 

相關文章