<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 插件開發:Android端API實現 本節我們接著上一節"獲取電池電量"插件的示例,來完成Android端API的實現。以下步驟是使用Java的示例,如果您更喜歡Kotlin,可以直接跳到后面Kotlin部分。 首先在Android Studio中打開您的Flutter應用的Android部分: 1. 啟動 Android Studio 2. 選擇 File > Open… 3. 定位到您 Flutter app目錄, 然后選擇里面的 `android`文件夾,點擊 OK 4. 在`java`目錄下打開 `MainActivity.java` 接下來,在`onCreate`里創建MethodChannel并設置一個`MethodCallHandler`。確保使用和Flutter客戶端中使用的通道名稱相同的名稱。 ``` import io.flutter.app.FlutterActivity; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.Result; public class MainActivity extends FlutterActivity { private static final String CHANNEL = "samples.flutter.io/battery"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( new MethodCallHandler() { @Override public void onMethodCall(MethodCall call, Result result) { // TODO } }); } } ``` 接下來,我們添加Java代碼,使用Android電池API來獲取電池電量。此代碼和在原生Android應用中編寫的代碼完全相同。 首先,添加需要導入的依賴。 ``` import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; ``` 然后,將下面的新方法添加到activity類中的,位于onCreate 方法下方: ``` private int getBatteryLevel() { int batteryLevel = -1; if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE); batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); } else { Intent intent = new ContextWrapper(getApplicationContext()). registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); batteryLevel = (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); } return batteryLevel; } ``` 最后,我們完成之前添加的`onMethodCall`方法。我們需要處理平臺方法名為`getBatteryLevel`的調用消息,所以我們需要先在call參數判斷調用的方法是否為`getBatteryLevel`。 這個平臺方法的實現只需調用我們在前一步中編寫的Android代碼,并通過result參數返回成功或錯誤情況的響應信息。如果調用了未定義的API,我們也會通知返回: ``` @Override public void onMethodCall(MethodCall call, Result result) { if (call.method.equals("getBatteryLevel")) { int batteryLevel = getBatteryLevel(); if (batteryLevel != -1) { result.success(batteryLevel); } else { result.error("UNAVAILABLE", "Battery level not available.", null); } } else { result.notImplemented(); } } ``` 現在就可以在Android上運行該應用程序了,如果使用的是Android模擬器,則可以通過工具欄中的"..."按鈕訪問Extended Controls面板中的電池電量。 ### 使用Kotlin添加Android平臺特定的實現 使用Kotlin和使用Java的步驟類似,首先在Android Studio中打開您的Flutter應用的Android部分: 1. 啟動 Android Studio。 2. 選擇 the menu item "File > Open…"。 3. 定位到 Flutter app目錄, 然后選擇里面的 `android`文件夾,點擊 OK。 4. 在`kotlin`目錄中打開`MainActivity.kt`。 接下來,在`onCreate`里創建MethodChannel并設置一個`MethodCallHandler`。確保使用與在Flutter客戶端使用的通道名稱相同。 ``` import android.os.Bundle import io.flutter.app.FlutterActivity import io.flutter.plugin.common.MethodChannel import io.flutter.plugins.GeneratedPluginRegistrant class MainActivity() : FlutterActivity() { private val CHANNEL = "samples.flutter.io/battery" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result -> // TODO } } } ``` 接下來,我們添加Kotlin代碼,使用Android電池API來獲取電池電量,這和原生開發是一樣的。 首先,添加需要導入的依賴。 ``` import android.content.Context import android.content.ContextWrapper import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import android.os.Build.VERSION import android.os.Build.VERSION_CODES ``` 然后,將下面的新方法添加到activity類中的,位于onCreate 方法下方: ``` private fun getBatteryLevel(): Int { val batteryLevel: Int if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) } else { val intent = ContextWrapper(applicationContext).registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) batteryLevel = intent!!.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100 / intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1) } return batteryLevel } ``` 最后,我們完成之前添加的`onMethodCall`方法。我們需要處理平臺方法名為`getBatteryLevel`的調用消息,所以我們需要先在call參數判斷調用的方法是否為`getBatteryLevel`。 這個平臺方法的實現只需調用我們在前一步中編寫的Android代碼,并通過result參數返回成功或錯誤情況的響應信息。如果調用了未定義的API,我們也會通知返回: ``` MethodChannel(flutterView, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "getBatteryLevel") { val batteryLevel = getBatteryLevel() if (batteryLevel != -1) { result.success(batteryLevel) } else { result.error("UNAVAILABLE", "Battery level not available.", null) } } else { result.notImplemented() } } ``` 您現在就可以在Android上運行該應用程序。如果您使用的是Android模擬器,則可以通過工具欄中的"..."按鈕訪問Extended Controls面板中的電池電量。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看