Skip to content

Commit 7f757a8

Browse files
sevenhhearchurcode
authored andcommitted
App自定义h5控制面板-蓝牙部分
http://tapd.oa.com/NEW_IOT/prong/tasks/view/1020393192007595705?url_cache_key=a0791f381590f6254135cb9abb1f42a7&action_entry_type=tasks Change-Id: Ib730d5fa872742fea072473df6cdb14c7db00916
1 parent 6555b7f commit 7f757a8

File tree

9 files changed

+856
-5
lines changed

9 files changed

+856
-5
lines changed

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt

+22
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.tencent.iot.explorer.link.kitlink.activity
22

33
import android.annotation.SuppressLint
4+
import android.app.Activity
45
import android.content.Intent
56
import android.net.Uri
67
import android.os.Build
78
import android.text.TextUtils
9+
import android.util.Log
810
import android.view.View
911
import android.webkit.*
1012
import com.alibaba.fastjson.JSON
@@ -22,6 +24,9 @@ import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow
2224
import com.tencent.iot.explorer.link.kitlink.util.HttpRequest
2325
import com.tencent.iot.explorer.link.core.auth.callback.MyCallback
2426
import com.tencent.iot.explorer.link.kitlink.util.RequestCode
27+
import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl
28+
import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt
29+
import com.tencent.iot.explorer.link.kitlink.webview.OnEventCallback
2530
import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack
2631
import kotlinx.android.synthetic.main.activity_device_details.*
2732
import kotlinx.android.synthetic.main.activity_device_panel.*
@@ -33,6 +38,7 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App
3338
private var callback: WebCallBack? = null
3439
private var deviceEntity: DeviceEntity? = null
3540
private var editPopupWindow: EditPopupWindow? = null
41+
private var onEventCallback: OnEventCallback? = null
3642

3743
override fun getContentView(): Int {
3844
return R.layout.activity_device_panel
@@ -64,6 +70,7 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App
6470
when (reqCode) {
6571
RequestCode.token_ticket -> {
6672
if (response.isSuccess()) {
73+
JSBridgeKt.register("help_center_bridge", BridgeImpl::class.java)
6774
val ticketResponse = JSON.parse(response.data.toString()) as JSONObject
6875
var url = H5_PANEL_BASE_URL +
6976
"?deviceId=${deviceEntity?.DeviceId}" +
@@ -153,10 +160,18 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App
153160
override fun onReceivedTouchIconUrl(view: WebView?, url: String?, precomposed: Boolean) { }
154161

155162
override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean {
163+
result.confirm(JSBridgeKt.callNative(view, message))
156164
return true
157165
}
158166
}
159167

168+
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
169+
super.onActivityResult(requestCode, resultCode, data)
170+
if (resultCode == Activity.RESULT_OK && requestCode == JSBridgeKt.OPEN_BULE_TOOTH_REQ_CODE) {
171+
onEventCallback!!.onActivityShow()
172+
}
173+
}
174+
160175
private val webViewClient = object: WebViewClient() {
161176
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
162177
L.e("shouldOverrideUrlLoading: " + url)
@@ -199,6 +214,13 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App
199214
url.contains("goFirmwareUpgradePage") -> {
200215
callBackToH5(getCallbackId(url))
201216
}
217+
url.contains("openBluetoothAdapter") -> {
218+
JSBridgeKt.callNative(view, url)
219+
onEventCallback = JSBridgeKt.onEventCallback
220+
}
221+
else -> {
222+
JSBridgeKt.callNative(view, url)
223+
}
202224
}
203225
return true
204226
}

app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectPointActivity.kt

-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ class SelectPointActivity : BaseActivity() {
8181
}
8282

8383
private fun refreshHistory() {
84-
Log.e("XXX", "address " + JSON.toJSONString(address))
8584
if (address != null && address.size > 0) {
8685
lv_history.visibility = View.VISIBLE
8786
no_history_tip_layout.visibility = View.GONE

app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt

+16
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,21 @@ object CommonField {
6969
const val STORED_ADDRESS = "storedAddress"
7070
const val FAMILY_ID = "familyId"
7171
const val FAMILY_NAME = "familyName"
72+
const val CALLBACK_ID = "callbackId"
73+
const val DEV_ID = "deviceId"
74+
const val UUID = "uuid"
75+
const val SERVICES = "services"
76+
const val DEVS = "devices"
77+
const val DATA_JSON = "data"
78+
const val AVAILABLE = "available"
79+
const val DISCOVERING = "discovering"
80+
const val NAME = "name"
81+
const val PAYLOAD = "payload"
82+
const val EMIT_EVENT = "emitEvent"
83+
const val RSSI = "RSSI"
84+
const val CONNECTED = "connected"
85+
const val SERVICE_ID = "serviceId"
86+
const val CHARACTERISTIC_ID = "characteristicId"
7287

7388
/*******上传文件********/
7489
const val CREDENTIALS = "credentials"
@@ -172,6 +187,7 @@ object CommonField {
172187
const val FILL_CONTENT_REQ_CODE = 0x1111
173188
const val MAP_LOCATION_REQ_CODE = 0x1112
174189
const val SELECT_MAP_POSTION_REQ_CODE = 0x1113
190+
const val BULE_TOOTH_REQ_CODE = 0x1114
175191

176192
const val SSID_UNKNOWN = "<unknown ssid>"
177193
const val EXTRA_TITLE = "title"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.tencent.iot.explorer.link.kitlink.entity
2+
3+
import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString
4+
5+
class BluetoothDevicesRequired {
6+
var services = ArrayString()
7+
var allowDuplicatesKey = false
8+
var interval = 0
9+
var powerLevel = "medium"
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.tencent.iot.explorer.link.kitlink.entity
2+
3+
import android.bluetooth.BluetoothDevice
4+
import com.alibaba.fastjson.JSONArray
5+
import com.alibaba.fastjson.JSONObject
6+
import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString
7+
8+
class BuleToothDev {
9+
var name = ""
10+
var deviceId = ""
11+
var RSSI = 0
12+
var advertisData = JSONArray()
13+
var advertisServiceUUIDs = JSONArray()
14+
var localName = ""
15+
var serviceData = JSONObject()
16+
var dev: BluetoothDevice? = null
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.tencent.iot.explorer.link.kitlink.webview;
2+
3+
import android.bluetooth.BluetoothAdapter;
4+
import android.content.BroadcastReceiver;
5+
import android.content.Context;
6+
import android.content.Intent;
7+
import android.util.Log;
8+
9+
/**
10+
* 广播监听蓝牙状态
11+
*/
12+
public class BlueToothStateReceiver extends BroadcastReceiver {
13+
public static int DEFAULT_VALUE_BULUETOOTH = 1000;
14+
public OnBlueToothStateListener onBlueToothStateListener;
15+
16+
@Override
17+
public void onReceive(Context context, Intent intent) {
18+
String action = intent.getAction();
19+
if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
20+
onBlueToothStateListener.onfinishDiscovery();
21+
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
22+
onBlueToothStateListener.onStartDiscovery();
23+
}
24+
if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
25+
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, DEFAULT_VALUE_BULUETOOTH);
26+
switch (state) {
27+
case BluetoothAdapter.STATE_OFF://蓝牙已关闭
28+
onBlueToothStateListener.onStateOff();
29+
break;
30+
case BluetoothAdapter.STATE_ON://蓝牙已开启
31+
onBlueToothStateListener.onStateOn();
32+
break;
33+
case BluetoothAdapter.STATE_TURNING_ON://蓝牙正在打开
34+
onBlueToothStateListener.onStateTurningOn();
35+
break;
36+
case BluetoothAdapter.STATE_TURNING_OFF://蓝牙正在关闭
37+
onBlueToothStateListener.onStateTurningOff();
38+
break;
39+
default:
40+
Log.e("BlueToothError", "蓝牙状态未知");
41+
}
42+
}
43+
}
44+
45+
public interface OnBlueToothStateListener {
46+
void onStateOff();
47+
48+
void onStateOn();
49+
50+
void onStateTurningOn();
51+
52+
void onStateTurningOff();
53+
54+
void onStartDiscovery();
55+
56+
void onfinishDiscovery();
57+
}
58+
59+
public void setOnBlueToothStateListener(OnBlueToothStateListener onBlueToothStateListener) {
60+
this.onBlueToothStateListener = onBlueToothStateListener;
61+
}
62+
63+
}

0 commit comments

Comments
 (0)