android的混合开发 JS页面能接收广播吗? 在网页接收不到蓝牙按键的事件和广播

JavaScript028

android的混合开发 JS页面能接收广播吗? 在网页接收不到蓝牙按键的事件和广播,第1张

不是手机的问题,耳机的问题。

蓝牙耳机不止一种,我所知的一种是a2dp的一种不是a2dp的,a2dp的耳机就是可以听歌的,另外一种不能听歌

对于a2dp的耳机,如果短按一次hook键,系统会当作一个keyevent来处理,走的是发送广播的流程。如果短按多次,或者长按一次hook 键,不会有keyevent,会当作一个类似与“BVRA”的AP命令来处理,处理过程可以参考源码的BluetoothHandsfree.java, 这个时候就收不到广播。

而对于不是a2dp的耳机,无论怎样按按键,都是发送ap命令,不会收到keyevent。

解决方法有两个,一是换个耳机,二是改rom,在蓝牙bsp那部分,无论什么耳机都走keyevent的流程

引入sockjs.js   stomp.js

function connect() {

// 建立连接对象(还未发起连接)

    var socket =new SockJS("http://192.168.0.167:8081/endpointWisely")

    // 获取 STOMP 子协议的客户端对象

    stompClient = Stomp.over(socket)

    // 向服务器发起websocket连接并发送CONNECT帧

    stompClient.connect({},

        function (frame) {

// 连接成功时(服务器响应 CONNECTED 帧)的回调方法

            console.log('已连接' + frame)

            stompClient.subscribe("/topic/response",function (res) {

console.log(res.body)

})

},

        // 连接失败时(服务器响应 ERROR 帧)的回调方法

        function errorCallBack (error) {

console.log('连接失败' + error)

        }

)

}

node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验,于是socket.io诞生。

socket.io设计的目标是支持任何的浏览器,任何Mobile设备。目前支持主流的PC浏览器 (IE,Safari,Chrome,Firefox,Opera等),Mobile浏览器(iphone Safari/ipad Safari/android WebKit/WebOS WebKit等)。socket.io基于node.js并简化了WebSocket API,统一了通信的API。它支持:WebSocket, Flash Socket, AJAX long-polling, AJAX multipart streaming, Forever IFrame, JSONP polling。

socket.io解决了实时的通信问题,并统一了服务端与客户端的编程方式。启动了socket以后,就像建立了一条客户端与服务端的管道,两边可以互通有无。