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

一个最简单的基站定位定出自己位置的小程序

2013-02-06 14:34 507 查看
喜欢的童鞋可点击下载:http://www.apkbus.com/android-95636-1-1.html

主程序:

jzdw包:

package com.xmb.jzdw;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;

public class Jzdw extends Activity {
public TextView myDate, jingdu,mylocation;
public BMapManager mapManager;
private String lng1;
private String lat1;
private String date;
private String Precision;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
Log.i("out","handlemessenge");
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = format1.format(new Date());
myDate.setText(date);
Bundle data = msg.getData();
// lng1 = data.getString("Longltude");
lng1 = data.getString("Longltude");
lat1 = data.getString("Latitude");
//jzdwaddress = data.getString("jzdwaddress");
Precision = data.getString("accuracy");
jingdu.setText(Precision);
mylocation.setText("经度为:" + lng1 + "\n维度为:" + lat1);

}}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myDate=(TextView)findViewById(R.id.t1);
jingdu=(TextView)findViewById(R.id.t3);
mylocation = (TextView) this.findViewById(R.id.t2);
new Thread(new Jzdw1(handler, this)).start();

/*
mapManager=new BMapManager(this);

mapManager.init("471066e711cc4128a04b3e3b1930a422", new MyMKGeneralListener());

mapManager.getLocationManager().setNotifyInternal(20, 5);

mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());

mapManager.start();
*/

//      mapManager = new BMapManager(this);
//        mapManager.init("EDB67AD764D300895C95ABA02A4DDC58D5485CCD",
//                new MyMKGeneralListener());
//        // 设置通知间隔:iMaxSecond - 最大通知间隔,单位:秒;iMinSecond - 最小通知间隔,单位:秒
//        mapManager.getLocationManager().setNotifyInternal(20, 5);
//
//        mapManager.getLocationManager().requestLocationUpdates(
//                new MyLocationListener());
//        mapManager.start();

}
/*
// 定位自己的位置,只定位一次
class MyLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location arg0) {

double jindu1 = arg0.getLatitude();
double weidu1 = arg0.getLongitude();

int jindu = (int) (arg0.getLatitude()*1000000);
int weidu = (int) (arg0.getLongitude()*1000000);
mylocation.setText("经度:" + jindu1 + ",纬度:" + weidu1);
System.out.println("1111经度:" + jindu1 + ",111纬度:" + weidu1);
MKSearch search = new MKSearch();
search.init(mapManager, new MyMKSearchListener());
search.reverseGeocode(new GeoPoint(jindu, weidu));
}

}

class MyMKSearchListener implements MKSearchListener {

@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
if (arg0 == null) {
mylocation.setText("没有获取想要的位置");
} else {
GeoPoint point = arg0.geoPt;
mylocation.setText("地址:" + arg0.strAddr + ",坐标:"
+ point.getLatitudeE6() + "," + point.getLongitudeE6());
}
}

@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
// TODO Auto-generated method stub

}

}

// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyMKGeneralListener implements MKGeneralListener {

@Override
public void onGetNetworkState(int arg0) {

}

@Override
public void onGetPermissionState(int arg0) {

}

}*/
}


jzdw1包:

package com.xmb.jzdw;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;

import android.content.Context;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.util.Log;

public class Jzdw1 extends Thread{
private TelephonyManager tm;
private Handler handler;
private Context context;
Double lat;
Double lng;
public BMapManager mapManager;

public Jzdw1(Handler handler, Context context) {

this.handler = handler;
this.context = context;

mapManager=new BMapManager(context);
Log.i("out","gouzao");
mapManager.init("471066e711cc4128a04b3e3b1930a422", new MyMKGeneralListener());
mapManager.getLocationManager().setNotifyInternal(20, 5);
}

@Override
public void run() {
Log.i("out","run");
mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());
mapManager.start();
}

class MyLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location arg0) {
Integer jingdu = (int) (arg0.getLatitude()*1000000);
Integer weidu = (int) (arg0.getLongitude()*1000000);
Log.i("out","listener");
//            Integer jingdu = (int) (arg0.getLatitude()*1440000);
//            Integer weidu = (int) (arg0.getLongitude()*1440000);

String Accuray=String.valueOf(arg0.getAccuracy());
Bundle mydata=new Bundle();
Message msg=new Message();
mydata.putString("Longltude",String.valueOf(jingdu));
mydata.putString("Latitude",String.valueOf(weidu));
mydata.putString("accuracy",Accuray);

msg.setData(mydata);
msg.what=1;
handler.sendMessage(msg);
}

}

class MyMKSearchListener implements MKSearchListener {

@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
if (arg0 == null) {
//tv2.setText("没有获取想要的位置");
} else {
GeoPoint point = arg0.geoPt;
//                t1.append("\n" + arg0.strAddr);
}
}

@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {

}

@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {

}

@Override
public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {

}

@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {

}

@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {

}

@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {

}

//        @Override
//        public void onGetRGCShareUrlResult(String arg0, int arg1) {
//            // TODO Auto-generated method stub
//
//        }

}

// 常用事件监听,用来处理通常的网络错误,授权验证错误等
class MyMKGeneralListener implements MKGeneralListener {

@Override
public void onGetNetworkState(int arg0) {

}

@Override
public void onGetPermissionState(int arg0) {

}

}
}


xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/t1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:id="@+id/t2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:id="@+id/t3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>


记得在清单文件中添加权限哦(万能版):

<uses-permission   android:name="android.permission.KILL_BACKGROUND_PROCESSES"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.DEVICE_POWER" />

<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: