您的位置:首页 > 其它

获取手机基本信息

2011-03-09 13:05 260 查看
获取手机基本信息
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//注意在AndroidManifest中添加权限
String mobile = (tm.getLine1Number() == null ? "" : tm.getLine1Number());
String imsi = (tm.getSubscriberId() == null ? "" : tm.getSubscriberId());
String imei = (tm.getDeviceId() == null ? "" : tm.getDeviceId());
String operator = (tm.getNetworkOperatorName() == null ? "":tm.getNetworkOperatorName());
String version = (Build.VERSION.RELEASE == null ? "" : Build.VERSION.RELEASE);
String model = (Build.MODEL == null ? "" : Build.MODEL);

获取地址位置,辛苦代码大发送。
private Context context;
public static String LATITUDE = "latitude";
public static String LONGITUDE = "longitude";
public static String PROVINCE = "province";
public static String CITY = "city";

public PhoneLocation(Context iContext) {
context = iContext;
}

public ContentValues getLocation(){
ContentValues contentValue = new ContentValues();

try{
contentValue = getByBasestation();//先使用基于基站的方式
if(contentValue.size() <= 0){
contentValue = getByGPS();////再通过GPS方式
}
}catch(Exception e){
}

return contentValue;
}

// 依赖Google的接口,通过基站(非GPS)获取
private ContentValues getByBasestation() {
ContentValues conValues = new ContentValues();

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();

try {
int cid = gcl.getCid();
int lac = gcl.getLac();
int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0, 3));

int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3, 5));

//组装JSON查询字符串
JSONObject holder = new JSONObject();
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
// holder.put("address_language", "zh_CN");
holder.put("request_address", true);

JSONArray array = new JSONArray();
JSONObject data = new JSONObject();

data.put("cell_id", cid); // 25070
data.put("location_area_code", lac);// 4474
data.put("mobile_country_code", mcc);// 460
data.put("mobile_network_code", mnc);// 0
array.put(data);
holder.put("cell_towers", array);

//创建连接,发送请求并接受回应
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.google.com/loc/json");

StringEntity se = new StringEntity(holder.toString());
post.setEntity(se);
HttpResponse resp = client.execute(post);
HttpEntity entity = resp.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent()));
StringBuffer sb = new StringBuffer();
String result = br.readLine();

while (result != null) {
sb.append(result);
result = br.readLine();
}

String rslt = sb.toString();
int start = rslt.indexOf("latitude/":") + "latitude/":".length();
int end = rslt.indexOf(",/"", start);
if(start >= 0 && end >start){
String latitude = rslt.substring(start, end);
conValues.put(LATITUDE, latitude);
}

start = rslt.indexOf("longitude/":") + "longitude/":".length();
end = rslt.indexOf(",/"", start);
if(start >= 0 && end >start){
String longitude = rslt.substring(start,end);
conValues.put(LONGITUDE, longitude);
}
start = rslt.indexOf("region/":/"") + "region/":/"".length();
end = rslt.indexOf("/",", start);
if(start >= 0 && end >start){
String province = rslt.substring(start,end);
conValues.put(PROVINCE, province);
}
start = rslt.indexOf("city/":/"") + "city/":/"".length();
end = rslt.indexOf("/",", start);
if(start >= 0 && end >start){
String city=rslt.substring(start,end);
conValues.put(CITY, city);
}

} catch (Exception e) {

}

return conValues;
}

private ContentValues getByGPS() {
ContentValues conValues = new ContentValues();

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
// 获得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省电模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获得当前的位置提供者
String provider = locationManager.getBestProvider(criteria, true);
// 获得当前的位置
Location location = locationManager.getLastKnownLocation(provider);

// ע注意location为空的处理办法
if(location != null){
// 获得当前位置的纬度
Double latitude = location.getLatitude();
// 获得当前位置的经度
Double longitude = location.getLongitude();

conValues.put(LATITUDE, latitude);
conValues.put(LONGITUDE, longitude);

// 获取显示位置
Geocoder gc = new Geocoder(context);
List<Address> addresses = null;
try {
addresses = gc.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);//走gprs,此处不通
} catch (IOException e) {
e.printStackTrace();
}
if(addresses != null){
if (addresses.size() > 0) {
conValues.put(PROVINCE, addresses.get(0).getLocality());
conValues.put(CITY, addresses.get(0).getFeatureName());
}
}
}

return conValues;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: