Unity – Native Code Plugins(Android)でバッテリ情報取得

Tweet about this on TwitterShare on Facebook12Share on Google+0Pin on Pinterest0

UnityにはNative Code PluginsというUnity以外で作成されたコードをUnity プラグインの形で含めることができる機能があります。そのNative Code PluginsでAndroidのバッテリ情報を取得してみます。(iOS版はこちらをご覧ください)

jarファイルを作る方法もあるみたいなんですが『AndroidStudioを使ってUnityとAndroidの連携』を参考にしてAndroid Studioでaarファイルを作ってUnityと連携してみました。

Android Studioで作成したソースをGit(mizutanikirin/UnityAndroidBattery)にアップしているので参考にしてみてください。

1.Android Studioでプロジェクト新規作成

1.1. Android Studioを起動して[Start a new Android Studio project]を選択

1.2. プロジェクトの設定

『Configure your new project』でApplication nameなどを設定する。

『Target Android Devices』でUnityプロジェクトのAndroidバージョン( UnityのFile>Build Settings...>Player Settings...>Other Settings>Minimum API Level )と同じバージョンにする。

『Add an activity to Mobile』でAdd No Activeityを選択する。

2.Android Studioでモジュール新規作成

1で空のプロジェクトが作成できたので次にモジュールを作っていきます。

2.1. 新規モジュール作成

File > New > New Module... で新規にモジュール作成をします。

5

2.2. モジュールの設定

『New Module』でAndroid Libraryを選択します。

『Android Library』でApplication/Library nameなどを設定します。

7

[Finish]を押すとこういった感じになっているはずです。

3.モジュールの初期設定

3.1. Unityのclasses.jarをモジュールに組み込む

Unity/PlaybackEngines/AndroidPlayer/Variations/mono/Development/Classes/classes.jar を ~/Battery/lib/libs/ にコピーします。

3.2. Gradleの設定

Gradle Scriptのbuild.gradle (Module:lib)に以下を追加します。

追加すると以下のようになっています。

4.Classファイルの新規作成

いよいよ本体のClassファイルを作っていきます。

4.1. 新規Class作成

Project > lib > java > net.mizutanikirin.battery.lib を選択した状態で File > New > Java Class で新規Classファイルを作成します。

Class nameはGetBatteryにしました。

作成するとProjectは以下のようになっているはずです。

5.バッテリ情報の取得コード作成

充電ステータスを取得する BatteryState() とバッテリ残量を取得する BatteryLevel() を static にして作成しています。

参考:電池の状態を取得する
参考:電池残量と充電状態の監視

6.aarファイル作成

Android StudioのTerminalウィンドウで以下コマンドを実行します。

そうすると ~/Battery/lib/build/outputs/aar/ に lib-release.aar ができます。

7.Unityプロジェクトにaarファイルを組み込む

6で作成したaarファイルを適当な名前にリネーム battery-lib.aar してUnityのプロジェクトフォルダの Assets/Plugins/Android/ に入れます。

8.Unityからバッテリ情報取得

BatteryScript.cs を作成して適当なGameObjectに[Add Component]してみてください。コードは以下になり、 AndroidJavaObject.CallStatic<...>("関数名") でJavaのstatic関数を読み込むことができます。

Unityエディタ上では実行できないのでこれをAndroid端末にインストールします。長くなりましたが以上でバッテリ情報取得ができているはずです。

Tweet about this on TwitterShare on Facebook12Share on Google+0Pin on Pinterest0

← Previous post

Next post →

1 Comment

  1. 匿名

    大変役に立ちました。
    ありがとうございます。

コメントを残す