其實這個方法不管是要開啟藍芽還是振動之類需要有權限的要求,都可以達成。

 

使用Android Studio可以看這篇Unity 使用Android Bluetooth (Android Studio) 

建議可以先看過這篇文章(Unity使用Android的Toast),作法上有很多類似的地方。

而藍芽部分可以看這篇文章

 

開啟個新的專案

 

 

之後請到Unity的安裝路徑:Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin

複製這個檔案到剛剛創建的Eclipse專案的libs資料夾內

之後再對該專案按下F5重新整理,即可看到如下圖所示:

 

 

再來開啟src資料夾內的MainActivity.java,編寫以下程式碼,在這個範例中是假設手機上有藍芽設備、且為不通知使用者強制開啟藍芽。


 

package com.example.androidbluetooth;

import android.bluetooth.BluetoothAdapter;
import com.unity3d.player.UnityPlayer;

public class MainActivity
{    
    public static void openBluetooth()
    {
        UnityPlayer.currentActivity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                BluetoothAdapter bluetoothAdapter;
                bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                
                if (bluetoothAdapter.isEnabled() == false)
                {
                    bluetoothAdapter.enable();
                }
            }
        });
    }
}


 

 

都好後Ctrl+S存檔,再對專案點右鍵 → Export,選擇JAR file

 

然後按照下面這張圖的方式勾選完畢後,按下Finish

 

之後開啟Unity,新建一個專案,命名為useBluetooth,並產生如下的資料夾

並將剛剛Eclipse產生的jar放到libs資料夾內

 

再來就是最重要的一步!

到Unity的安裝路徑:Unity\Editor\Data\PlaybackEngines\androidplayer

複製到Android資料夾內

 

再來就是打開這個xml檔案...

改為剛剛在Eclipse上建立的的 AndroidBluetooth → AndroidManifest.xml 的 package 名稱(也就是改成下面藍底的那行)

 

以及將這行也加入

 

和藍芽權限

 

完成後的檔案就長這樣(更動到的地方已經用綠框框住)

 

 

以上步驟都做好後,就新增三個C#腳本,分別命名為:AndroidBehaviour 、 Bluetooth 、Test

AndroidBehaviour腳本同開頭我提到的「Unity使用Android的Toast」那篇AndroidBehaviour腳本相同,所以就不再重複了

而Bluetooth腳本程式碼如下:


using UnityEngine;
using System.Collections;

public class Bluetooth : AndroidBehaviour<Bluetooth>
{
    protected override string javaClassName
    {
        //要呼叫的class所在的Package名稱.要呼叫的java class名稱
        get { return "com.example.androidbluetooth.MainActivity"; }
    }


    public static void openBT()
    {
        instance.CallStatic("openBluetooth");
    }
}


 

Test腳本程式碼如下


using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour
{
    private void Start()
    {
        Bluetooth.openBT();
    }
}


 

都好之後將Test和Bluetooth放到同個物件上!

(在此範例我放到Camera上)

 

之後在 Player Setting 內的 Bundle Identifier 要和 AndroidBluetooth 的 package 名稱一樣,且minSdk也要相同

最後就Build成apk,丟到手機上安裝執行了!(其實也可以直接Build And Run)

 

藍芽開啟了!(紅圈處)

 

 

完整檔案在此(包含 Eclipse 的 AndroidBluetooth 和 Unity 的 useBluetooth )

arrow
arrow
    全站熱搜

    Yang 發表在 痞客邦 留言(30) 人氣()