CocosCreator系列——與Java原生交互獲取手機震動

CocosCreator系列——與Java原生交互獲取手機震動


首先是客戶端代碼

// 此方法可以綁定在一個按鈕上或者某個方法裏面調用
onDoVibrate() {
        jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "DoVibrate", "()V");
    },

js調用Java代碼方法可以參考:Java原生反射機制可以參考官方文檔鏈接.
如果是新手的話,官方文檔說的org.cocos2dx.javascript路徑要在項目構建之後,在項目根目錄的build文件夾下面
下一步打開org.cocos2dx.javascript文件路徑下的AppActivity.java文件編輯代碼
1.導入文件所需依賴包

import android.os.Vibrator;
import android.app.Service;

2.聲明靜態變量myVibrator

public static Vibrator myVibrator;

3.在onCreate()方法中註冊服務

myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);

4.寫手機震動方法(注意此方法要和客戶端調用方法名一致)

//1000是震動毫秒數,根據自己實際需求來寫值
public static void DoVibrate() { myVibrator.vibrate(1000);}

5.打開AndroidManifest.xml文件註冊服務

//1000是震動毫秒數,根據自己實際需求來寫值
<uses-permission android:name="android.permission.VIBRATE"/>

至此全部完成,只需要客戶端調用onDoVibrate()方法,即可實現震動效果
下面附上AppActivity.java參考代碼


package org.cocos2dx.javascript;

import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.os.Bundle;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.os.Vibrator;
import android.app.Service;

public class AppActivity extends Cocos2dxActivity {

    public static Vibrator myVibrator;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (!isTaskRoot()) {
            // Android launched another instance of the root activity into an existing task
            // so just quietly finish and go away, dropping the user back into the activity
            // at the top of the stack (ie: the last state of this task)
            // Don't need to finish it again since it's finished in super.onCreate .
            return;
        }
        // DO OTHER INITIALIZATION BELOW
        SDKWrapper.getInstance().init(this);
        
        myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
        
    }

    public static void DoVibrate() {
        myVibrator.vibrate(1000);
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章