复制代码 代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Test extends Activity {

Context context=this;
LinearLayout mainView=null;
Button button=null;
TextView tv=null;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTitle("基站+联网+google数据库定位");
mainView=new LinearLayout(this);
mainView.setOrientation(LinearLayout.VERTICAL);
button=new Button(this);
button.setText("定位测试");
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
(new HttpThread(context)).start();
}
});
mainView.addView(button,new LinearLayout.LayoutParams(-2,-2));
tv=new TextView(this);
tv.setText("Hello!\n");
mainView.addView(tv);
setContentView(mainView);
}

class HttpThread extends Thread{

TelephonyManager tm=null;
GsmCellLocation gcl=null;
int cid=0;
int lac=0;
int mcc = 0;
int mnc =0;
StringBuffer sb=null;

Handler handler=new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
tv.append(sb.toString());
break;
}
super.handleMessage(msg);
}
};

HttpThread(Context context){
tm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
gcl=(GsmCellLocation) tm.getCellLocation();
cid=gcl.getCid();
lac=gcl.getLac();
mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,3));
mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,5));

sb=new StringBuffer();
sb.append("cid:"+cid + "\n");
sb.append("lac:"+lac + "\n");
sb.append("mcc:"+mcc + "\n");
sb.append("mnc:"+mnc + "\n");
}

public void run(){
try {
JSONObject jObject = new JSONObject();
jObject.put("version", "1.1.0");
jObject.put("host", "maps.google.com");
jObject.put("request_address", true);
if (mcc == 460) {
jObject.put("address_language", "zh_CN");
} else {
jObject.put("address_language", "en_US");
}
JSONArray jArray = new JSONArray();
JSONObject jData = new JSONObject();
jData.put("cell_id", cid);
jData.put("location_area_code", lac);
jData.put("mobile_country_code", mcc);
jData.put("mobile_network_code", mnc);
jArray.put(jData);
jObject.put("cell_towers", jArray);

DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.google.com/loc/json");
StringEntity se = new StringEntity(jObject.toString());
post.setEntity(se);
HttpResponse resp = client.execute(post);
BufferedReader br = null;
if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
sb.append("联网成功\n");
br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
}else{
sb.append("联网获取数据失败!\n");
}

String result = br.readLine();
while (result != null) {
sb.append(result);
result = br.readLine();
}
}catch(Exception ex){
sb.append(ex.getMessage());
}
Message msg=new Message();
msg.what=1;
handler.sendMessage(msg);
}
}
}

所需权限
复制代码 代码如下:

< uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">

更多相关文章

  1. [置顶] Android(安卓)命名规范 (提高代码可以读性)
  2. 一个android显示远程txt的代码例子
  3. Android:使用webview上传文件(支持相册和拍照) .
  4. Glide源码浅析
  5. android定位服务:查看位置源及其属性
  6. Android——自定义顶部标题栏
  7. 精确获取android软键盘高度
  8. OpenGl-ES2.0 For Android(安卓)读书笔记(一)
  9. Android——View.setTag()

随机推荐

  1. Android studio 挂断电话 使用ITelephony
  2. Android属性 bulid.prop等
  3. 解决Android 自定义RatingBar 不能显示半
  4. Android 配置Material Design库及使用Mat
  5. 查看Android内存的8中方法
  6. Android艺术开发探索第三章——View的事
  7. android有用链接
  8. Tab添加左右按钮
  9. Android 启动分析 init进程 init.rc
  10. Android程序版本控制工具类