百度智能小程序 監(jiān)聽設(shè)備方向變化

2020-09-05 14:32 更新

swan.onDeviceMotionChange

基礎(chǔ)庫 3.30.2 開始支持,低版本需做兼容處理。在工具和真機(jī)中的實(shí)現(xiàn)有區(qū)別,詳見 API 實(shí)現(xiàn)差異

解釋:監(jiān)聽設(shè)備方向變化事件。頻率根據(jù) swan.startDeviceMotionListening() 的 interval 參數(shù)。可以使用 swan.stopDeviceMotionListening() 停止監(jiān)聽。

方法參數(shù)

Function callback

callback參數(shù)說明

屬性名類型必填默認(rèn)值說明

alpha

Number

當(dāng)手機(jī)坐標(biāo) X/Y 和 地球 X/Y 重合時(shí),繞著 Z 軸轉(zhuǎn)動(dòng)的夾角為 alpha,范圍值為 [0, 2*PI)。逆時(shí)針轉(zhuǎn)動(dòng)為正。

beta

Number

當(dāng)手機(jī)坐標(biāo) Y/Z 和地球 Y/Z 重合時(shí),繞著 X 軸轉(zhuǎn)動(dòng)的夾角為 beta。范圍值為 [-1*PI, PI) 。頂部朝著地球表面轉(zhuǎn)動(dòng)為正。也有可能朝著用戶為正。

gamma

Number

當(dāng)手機(jī) X/Z 和地球 X/Z 重合時(shí),繞著 Y 軸轉(zhuǎn)動(dòng)的夾角為 gamma。范圍值為 [-1*PI/2, PI/2)。右邊朝著地球表面轉(zhuǎn)動(dòng)為正。

示例 

在開發(fā)者工具中打開


圖片示例

代碼示例

<view class="wrap">
    <view class="card-area">
        <view class="list-area border-bottom" s-for="item in infoList">
            <text class="list-item-key-4">{{item.chineseName}}</text>
            <text class="list-item-value">{{item.value}}</text>
        </view>
        <view class="button-group">
            <button bind:tap="stopDeviceMotionListening" disabled="{{!disabled}}" type="primary" hover-stop-propagation="true">停止監(jiān)聽</button>
            <button bind:tap="startDeviceMotionListening" disabled="{{disabled}}" type="primary" hover-stop-propagation="true">開始監(jiān)聽</button>
        </view>
    </view>
</view>
Page({
    data: {
        infoList: [{
            engName: 'alpha',
            chineseName: 'z軸角度',
            value: ''
        }, {
            engName: 'beta',
            chineseName: 'x軸角度',
            value: ''
        }, {
            engName: 'gamma',
            chineseName: 'y軸角度',
            value: ''
        }],
        disabled: false
    },
    startDeviceMotionListening() {
        swan.startDeviceMotionListening({
            interval: 'ui',
            success: () => {
                this.setData('disabled', !this.data.disabled);
                console.log('startDeviceMotionListening success');
                this.onDeviceMotionChange();
            },
            fail: err => {
                console.log('startDeviceMotionListening fail', err);
            }
        });
    },
    onDeviceMotionChange() {
        swan.onDeviceMotionChange(res => {
            console.log('onDeviceMotionChange', res);
            this.updateInfoList(res);
        });
    },
    stopDeviceMotionListening() {
        swan.stopDeviceMotionListening({
            success: () => {
                this.setData('disabled', !this.data.disabled);
                console.log('stopDeviceMotionListening success');
            },
            fail: err => {
                console.log('stopDeviceMotionListening fail', err);
            }
        });
    },
    updateInfoList(res) {
        let infoList = this.data.infoList;
        for (let item of infoList) {
            if (!res[item.engName]) {
                item.value = '暫無';
            } else {
                item.value = res[item.engName].toFixed(2);
            }
        }
        this.setData('infoList', infoList);
    }
});


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)