android平台上的json解析 && 基站定位原理和GPS定位实例 && android RIL解析

本文介绍两种JSON数据格式的解析方法:普通格式与数组格式。通过Android示例代码演示如何解析这两种格式的数据,并展示了解析后的结果显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         json数据格式解析分为两种:一种是普通的,一种是带有数组形式的。 

普通形式的:服务器端返回的json数据格式如下:

{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}
带数组形式的:服务器端返回的数据格式为:

{"calendar":
    {"calendarlist": 
        [ 
           {"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false}, 
           {"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false} 
        ]
    }
}
所以解析上面两种格式的实例如下:

package pan.gch.demo;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
	private String simpleJSON = "{'userbean':{'Uid':'100196','Showname':'\u75af\u72c2\u7684\u7334\u5b50','Avtar':null,'State':1}}";
	private String complexJSON = "{'calendar':{'calendarlist':[{'calendar_id':'1705','title':'(\u4eb2\u5b50)ddssd','category_name':'\u9ed8\u8ba4\u5206\u7c7b','showtime':'1288927800','endshowtime':'1288931400','allDay':false},{'calendar_id':'1706','title':'(\u65c5\u884c)','category_name':'\u9ed8\u8ba4\u5206\u7c7b','showtime':'1288933200','endshowtime':'1288936800','allDay':false}]}}";
	private TextView mSimpleJSONTextView;
	private TextView mComplexJSONTextView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mSimpleJSONTextView = (TextView) findViewById(R.id.textView1);
		mComplexJSONTextView = (TextView) findViewById(R.id.textView2);
		try {
			JSONObject simpleJsonObject = new JSONObject(simpleJSON)
					.getJSONObject("userbean");
			String uidString = simpleJsonObject.getString("Uid");
			String shownameString = simpleJsonObject.getString("Showname");
			String avtarString = simpleJsonObject.getString("Avtar");
			int state = simpleJsonObject.getInt("State");
			mSimpleJSONTextView.setText(uidString + "\t" + shownameString
					+ "\t" + avtarString + "\t" + state);

			JSONObject complexObject = new JSONObject(complexJSON)
					.getJSONObject("calendar");
			String complexString = "";
			for (int i = 0; i < complexObject.getJSONArray("calendarlist")
					.length(); i++) {
				JSONObject complexJsonObject = (JSONObject) (complexObject
						.getJSONArray("calendarlist").opt(i));
				String complexItemString = null;
				String calendar_id = complexJsonObject.getString("calendar_id");

				String titleString = complexJsonObject.getString("title");
				String categoryString = complexJsonObject
						.getString("category_name");
				String showString = complexJsonObject.getString("showtime");
				String endShowString = complexJsonObject
						.getString("endshowtime");
				Boolean allDay = complexJsonObject.getBoolean("allDay");
				complexItemString = calendar_id + "\t" + titleString + "\t"
						+ categoryString + "\t" + showString + "\t" + "\t"
						+ endShowString + "\t";
				if (allDay == true) {
					complexItemString += "true";
				} else {
					complexItemString += "false";
				}
				complexString += (complexItemString + "\n");

			}
			mComplexJSONTextView.setText(complexString);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			System.out.println("-------------error" + e);
			e.printStackTrace();
		}
	}
}


执行结果如下图:

 ===============================基站定位原理和GPS定位实例===========================================

          首先普及一下手机基站信息中相关的专业词汇:通过TelephonyManager 获取lac:mcc:mnc:cell-id(基站信息)的解释:
 MCC,Mobile Country Code,移动国家代码(中国的为460);
 MNC,Mobile Network Code,移动网络号码(中国移动为0,中国联通为1,中国电信为2);
 LAC,Location Area Code,位置区域码;
 CID,Cell Identity,基站编号;
 BSSS,Base station signal strength,基站信号强度。通过获取基站编号及信号强度,通过地图服务商获取位置,参见http://blog.youkuaiyun.com/mad1989/article/details/9970431

  单GPS的定位使用,请参见:http://blog.youkuaiyun.com/jason0539/article/details/12047963。需要注意的是LocationManager的requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener),参数2刷新间隔和3位置移动间隔,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新。

 ===============================android RIL解析和应用===========================================

RIL层的解析和3G移植调试等问题,参见http://blog.youkuaiyun.com/bzw73/article/category/2391393



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值