JSON( JavaScript Object Notation ) 是一種輕量級的數(shù)據(jù)交換格式。易于閱讀和編寫,同時也易于機器解析和生成。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務門源,10多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
JSON 建構于兩種結構:
JSON 具有以下這些格式:
參考: Android 中 解析 JSON
Android 提供類四種不同的類來操作 JSON 數(shù)據(jù)。這些類是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer
為了解析 JSON 對象,須先創(chuàng)建一個 JSONObject 類的對象,需要傳入需解析的字符串 JSONObject root = new JSONObject(candyJson); 然后根據(jù) JSONObject 對象提供方法以及數(shù)據(jù)類型解析對應 json 數(shù)據(jù)。下表展示一些 JSONObiect 提供的方法
示例:
接口獲取下來的數(shù)據(jù)為
{"status":200,"message":"查詢成功","data":{"id":32,"user_id":null,"user_code":null,"user_pass":null,"meeting_id":"1","meeting_pass":null,"config_param_ip":"11.1.1.70","port":"6501","web_config_param_ip":"11.1.1.70","web_port":"6501","unit_code":null,"create_time":null,"update_time":null,"status":0,"userCode":"video1","userPass":"video1","meetingId":"1","meetingPass":"","apiPort":"13000","username":"admin","password":"123456","updateTime":"2021-11-08 17:45:29"}}
使用方法
try {
JSONObject jsonObject = new JSONObject(outstring);
int resultCode = jsonObject.getInt("status");
if (resultCode == 200) {
? ? JSONObject obj = jsonObject.getJSONObject("data");
? ? IP = obj.getString("config_param_ip");
? ? port = obj.getString("web_port");
? ? username = obj.getString("userCode");
? ? password = obj.getString("userPass");
? ? roomID = Integer.parseInt(obj.getString("meetingId"));
? ? roomPassword = obj.getString("password");
} else {
? ? ToastUtils.showShort("查詢失敗");
}
goVideo();
} catch (Exception e) {
e.printStackTrace();
}
功能需要,獲取物理手柄數(shù)據(jù)( 本文章只針對處于Android模式的手柄 ),然后轉換成云需要的數(shù)據(jù)。手柄數(shù)據(jù)主要分為兩款,一個是軸數(shù)據(jù),一個是按鍵數(shù)據(jù),下面分別來說明。
一是判斷是否還有左滾軸,二是判斷是否來源是手柄,至于為什么判斷是否包含左滾軸,因為市面上很多遙控器都有軸且設備源包含手柄。加上左滾軸判斷可以更精確。
按鍵數(shù)據(jù)可通過dispatchKeyEvent or onKeyDown,onKeyUp獲得,手柄數(shù)據(jù)如下:
軸數(shù)據(jù)通過onGenericMotionEvent(MotionEvent event)此方法傳遞。
通常手柄的有軸數(shù)據(jù)的功能組為,左搖桿,有搖桿,方向盤與 L2,R2兩個扳機鍵,除L2與R2只對應一個軸值外其他設備均對應X,Y兩個軸值,下面一一介紹:
對應軸:MotionEvent.AXIS_X,MotionEvent.AXIS_Y
取值范圍: [-1.0 , 1.0]
說明:X代表橫向數(shù)據(jù),Y代表縱向數(shù)據(jù)。
軸數(shù)據(jù)的獲取方式為:
對應軸:MotionEvent.AXIS_Z,MotionEvent.AXIS_RZ
取值范圍: [-1.0 , 1.0]
說明:Z代表橫向數(shù)據(jù),RZ代表縱向數(shù)據(jù)。
軸數(shù)據(jù)的獲取方式為:
對應軸:MotionEvent.AXIS_HAT_X,MotionEvent.AXIS_HAT_Y
取值范圍: [-1.0 , 1.0]
說明:AXIS_HAT_X代表橫向數(shù)據(jù),AXIS_HAT_Y代表縱向數(shù)據(jù)。X == 1.0 Y == 0 代表右邊,其他方位參考此值。
軸數(shù)據(jù)的獲取方式為:
部分手柄沒有此軸。
對應軸:MotionEvent.AXIS_LTRIGGER,MotionEvent.AXIS_RTRIGGER
取值范圍: [0 , 1.0]
軸數(shù)據(jù)的獲取方式為:
本篇文章對應的手柄模式需為Android模式,xBoxOne跟xBox360模式需讀取usb數(shù)據(jù)且是另外一套數(shù)據(jù)解析模式。后續(xù)再說。Over。