Android のための実装
プラグインの開発はほぼ完了しています。残っているのは Android の実装だけです。
プラグインを Capacitor に登録する
前提条件: 続ける前に Capacitor Custom Native Android Code documentation のドキュメントをよく理解してください。
Android Studio で npx cap open android
を実行し、Capacitor アプリケーションの Android プロジェクトを開いてください。 app モジュールと java フォルダーを展開し、アプリの Java パッケージを右クリックします。コンテキストメニューから New -> Package を選択し、plugins という名前のサブパッケージを作成します。 plugins パッケージを右クリックし、前述のプロセスを繰り返して、ScreenOrientationという名前のサブパッケージを作成します。
次に、 ScreenOrientation パッケージを右クリックし、コンテキストメニューから New -> Java File を選択して、新しい Java ファイルを追加します。このファイルの名前を ScreenOrientationPlugin.java
とします。また、同様にこの作業を行い、ScreenOrientation.java
という名前の新しいファイルを作成します。
次のコードを ScreenOrientationPlugin.java
に貼り付けます:
package io.ionic.cap.plugin.plugins.ScreenOrientation;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "ScreenOrientation")
public class ScreenOrientationPlugin extends Plugin {
@PluginMethod()
public void orientation(PluginCall call) {
call.resolve();
}
@PluginMethod()
public void lock(PluginCall call) {
call.resolve();
}
@PluginMethod()
public void unlock(PluginCall call) {
call.resolve();
}
}
Java と JavaScript の橋渡しをするために、プロジェクトの MainActivity の中にプラグインクラスを登録します。 MainActivity.java
を開き、プラグインを登録するための onCreate()
メソッドを追加してください。
package io.ionic.cap.plugin;
import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
import io.ionic.cap.plugin.plugins.ScreenOrientation.ScreenOrientationPlugin;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
registerPlugin(ScreenOrientationPlugin.class);
super.onCreate(savedInstanceState);
}
}
現在の画面の向きを取得する
iOS と同様に、まず現在の画面の向きを取得することに取り組みます。 ScreenOrientation.java
を開いてクラスを設定し、現在の向きを取得するメソッドを書きます。
package io.ionic.cap.plugin.plugins.ScreenOrientation;
import android.view.Surface;
import androidx.appcompat.app.AppCompatActivity;
public class ScreenOrientation {
private AppCompatActivity activity;
public ScreenOrientation(AppCompatActivity activity) {
this.activity = activity;
}
public String getCurrentOrientationType() {
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
return fromRotationToOrientationType(rotation);
}
private String fromRotationToOrientationType(int rotation) {
switch (rotation) {
case Surface.ROTATION_90:
return "landscape-primary";
case Surface.ROTATION_180:
return "portrait-secondary";
case Surface.ROTATION_270:
return "landscape-secondary";
default:
return "portrait-primary";
}
}
}
次に、ScreenOrientationPlugin.java
に orientation
メソッドを配置して、実装クラスのメソッドを呼び出すようにします:
package io.ionic.cap.plugins.ScreenOrientation;
import com.getcapacitor.JSObject;
/* Remaining imports omitted for brevity */
@CapacitorPlugin(name = "ScreenOrientation")
public class ScreenOrientationPlugin extends Plugin {
private ScreenOrientation implementation;
@Override
public void load() {
implementation = new ScreenOrientation(getActivity());
}
@PluginMethod()
public void orientation(PluginCall call) {
JSObject ret = new JSObject();
String type = implementation.getCurrentOrientationType();
ret.put("type", type);
call.resolve(ret);
}
/* Remaining code omitted for brevity */
}