package com.example.battery_info_ffi;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import android.content.Context;
import android.os.Looper;
public class BatteryInfoFfiPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler {
private MethodChannel channel;
private Context context;
static {
System.loadLibrary("battery_info_ffi");
}
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
context = binding.getApplicationContext();
channel = new MethodChannel(binding.getBinaryMessenger(), "battery_info_ffi");
channel.setMethodCallHandler(this);
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
}
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
if (Looper.myLooper() == null) {
Looper.prepare();
}
try{
if (call.method.equals("getBatteryLevel")) {
result.success(getBatteryLevel());
}
if (call.method.equals("isCharging")) {
result.success(isCharging());
} else {
result.notImplemented();
}
}catch(Exception e){
result.error("NATIVE_ERROR", e.getMessage(), null);
}
}
public native int getBatteryLevel();
public native boolean isCharging();
}
Полный projec t: ateral_info
Я попытался сделать это через Android.content.context , передавая его на собственные методы, но результат не отличался, и были даны аналогичные ошибки. Я также пытался тестировать на других устройствах, с другими, но результат одинаково.
@Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { context = binding.getApplicationContext(); channel = new MethodChannel(binding.getBinaryMessenger(), "battery_info_ffi"); channel.setMethodCallHandler(this); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { channel.setMethodCallHandler(null); }
@Override public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { if (Looper.myLooper() == null) { Looper.prepare(); } try{ if (call.method.equals("getBatteryLevel")) { result.success(getBatteryLevel()); } if (call.method.equals("isCharging")) { result.success(isCharging()); } else { result.notImplemented(); } }catch(Exception e){ result.error("NATIVE_ERROR", e.getMessage(), null); }
}
public native int getBatteryLevel();
public native boolean isCharging(); } [/code] [b] Полный projec [/b] t: ateral_info Я попытался сделать это через Android.content.context , передавая его на собственные методы, но результат не отличался, и были даны аналогичные ошибки. Я также пытался тестировать на других устройствах, с другими, но результат одинаково.