Flutter Android Bindings
This is a Flutter plugin for using Android's numerous platform-specific APIs in Flutter apps.
Prerequisites
Compatibility
Android only.
Installation
dependencies:
flutter_android: ^0.8.0
Features
-
Implements bindings to a growing set of Android's platform-specific APIs.
-
Reduces duplication of effort by centralizing Android bindings in a single package.
Feature Table
Feature | Flutter API |
---|---|
Activity launch | android_content.Intent#startActivity() |
Bluetooth scanning | android_bluetooth.BluetoothLeScanner |
Distance calculation | android_location.Location.distanceBetween() |
Face detection | android_media.FaceDetector |
Heart-rate monitoring | android_hardware.SensorManager.getDefaultSensor() |
Parcel serialization | android_os.Parcel |
Sensor event streams | android_hardware.Sensor#subscribe() |
Examples
Activity launch
import 'package:flutter_android/android_content.dart' show Intent;
await Intent(
action: "android.intent.action.VIEW", // Intent.ACTION_VIEW
data: Uri.parse("https://flutter.dev"),
).startActivity();
Parcel serialization
import 'package:flutter_android/android_os.dart' show Parcel;
var parcel = Parcel.obtain()
..writeBoolean(true)
..writeInt(42)
..writeDouble(3.1415)
..writeString("Hello, world!")
..writeList(<Object>[1, 2, 3])
..writeMap(<String, Object>{"a": 1, "b": 2, "c": 3});
await _channel.invokeMethod('someJavaMethod', parcel.asUint8List());
// In Java, your MethodCallHandler's call.arguments contains the marshaled Parcel
Face detection
import 'package:flutter_android/android_graphics.dart' show Bitmap;
import 'package:flutter_android/android_media.dart' show Face, FaceDetector;
var photo = Image.asset("images/einstein.png");
var bitmap = Bitmap.fromAssetImage(photo.image as AssetImage);
var detector = FaceDetector(width: 280, height: 396);
for (var face in await detector.findFaces(bitmap)) {
if (face.confidence < Face.CONFIDENCE_THRESHOLD) {
continue; // skip dubious results below the cut-off threshold
}
print("Found a face at (${face.midPoint.x}, ${face.midPoint.y}) with confidence ${face.confidence}");
}
Heart-rate monitoring
import 'package:flutter_android/android_hardware.dart'
show Sensor, SensorEvent, SensorManager;
var sensor = await SensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
var events = await sensor.subscribe();
events.listen((SensorEvent event) {
print(event.values[0]);
});
Frequently Asked Questions
TODO
Caveats
- iOS is not and cannot be supported.
All
flutter_android
APIs throw anAssertionError
if they are invoked when running on iOS. For cross-platform apps, we recommend that you depend on the platform package to conditionalize your use of Android APIs.
Reference
android
import 'package:flutter_android/android.dart' as android;
android_app
import 'package:flutter_android/android_app.dart' as android_app;
android_bluetooth
import 'package:flutter_android/android_bluetooth.dart' as android_bluetooth;
android_content
import 'package:flutter_android/android_content.dart' as android_content;
ComponentName
ContentValues
Context.cacheDir
Context.codeCacheDir
Context.dataDir
Context.externalCacheDir
Context.externalFilesDir
Context.filesDir
Context.getSharedPreferences()
Context.getSystemService()
Context.noBackupFilesDir
Context.packageCodePath
Context.packageName
Context.packageResourcePath
Intent
SharedPreferences
android_database
import 'package:flutter_android/android_database.dart' as android_database;
android_graphics
import 'package:flutter_android/android_graphics.dart' as android_graphics;
android_hardware
import 'package:flutter_android/android_hardware.dart' as android_hardware;
android_location
import 'package:flutter_android/android_location.dart' as android_location;
android_media
import 'package:flutter_android/android_media.dart' as android_media;
android_os
import 'package:flutter_android/android_os.dart' as android_os;
Bundle
Environment.dataDirectory
Environment.downloadCacheDirectory
Environment.externalStorageDirectory
Environment.externalStorageState
Environment.rootDirectory
Environment.isExternalStorageEmulated
Environment.isExternalStorageRemovable
Cross-Reference
Android | Flutter |
---|---|
android.app | android_app |
android.app.Activity | android_app.Activity |
android.app.ActivityManager | android_app.ActivityManager |
android.app.AlarmManager | android_app.AlarmManager |
android.app.AuthenticationRequiredException | android_app.AuthenticationRequiredException |
android.app.DownloadManager | android_app.DownloadManager |
android.app.KeyguardManager | android_app.KeyguardManager |
android.app.Notification | android_app.Notification |
android.app.Notification.Action | android_app.NotificationAction |
android.app.Notification.Builder | android_app.NotificationBuilder |
android.app.NotificationManager | android_app.NotificationManager |
android.app.PendingIntent | android_app.PendingIntent |
android.app.SearchManager | android_app.SearchManager |
android.app.WallpaperColors | android_app.WallpaperColors |
android.app.WallpaperInfo | android_app.WallpaperInfo |
android.app.WallpaperManager | android_app.WallpaperManager |
android.bluetooth | android_bluetooth |
android.bluetooth.BluetoothAdapter | android_bluetooth.BluetoothAdapter |
android.bluetooth.BluetoothDevice | android_bluetooth.BluetoothDevice |
android.bluetooth.BluetoothHeadset | android_bluetooth.BluetoothHeadset |
android.bluetooth.BluetoothManager | android_bluetooth.BluetoothManager |
android.bluetooth.le.BluetoothLeScanner | android_bluetooth.BluetoothLeScanner |
android.bluetooth.le | android_bluetooth |
android.content | android_content |
android.content.ActivityNotFoundException | android_content.ActivityNotFoundException |
android.content.ComponentName | android_content.ComponentName |
android.content.ContentValues | android_content.ContentValues |
android.content.Context | android_content.Context |
android.content.Intent | android_content.Intent |
android.content.IntentFilter | android_content.IntentFilter |
android.content.SharedPreferences | android_content.SharedPreferences |
android.database | android_database |
android.database.Cursor | android_database.Cursor |
android.database.CursorIndexOutOfBoundsException | android_database.CursorIndexOutOfBoundsException |
android.database.DatabaseUtils | android_database.DatabaseUtils |
android.database.MatrixCursor | android_database.MatrixCursor |
android.database.SQLException | android_database.SQLException |
android.graphics | android_graphics |
android.graphics.Bitmap | android_graphics.Bitmap |
android.graphics.Color | dart-ui.Color |
android.graphics.Point | android_graphics.Point |
android.graphics.PointF | android_graphics.PointF |
android.graphics.drawable.Icon | flutter.Icon |
android.hardware | android_hardware |
android.hardware.Sensor | android_hardware.Sensor |
android.hardware.SensorEvent | android_hardware.SensorEvent |
android.hardware.SensorEventListener | android_hardware.SensorEventListener |
android.hardware.SensorManager | android_hardware.SensorManager |
android.location | android_location |
android.location.Location | android_location.Location |
android.media | android_media |
android.media.FaceDetector | android_media.FaceDetector |
android.media.FaceDetector.Face | android_media.Face |
android.net | android_net |
android.nfc | android_nfc |
android.os | android_os |
android.os.BatteryManager | android_os.BatteryManager |
android.os.Build | android_os.Build |
android.os.Bundle | android_os.Bundle |
android.os.Environment | android_os.Environment |
android.os.HardwarePropertiesManager | android_os.HardwarePropertiesManager |
android.os.Parcel | android_os.Parcel |
android.os.Parcelable | android_os.Parcelable |
android.os.PowerManager | android_os.PowerManager |
android.os.Process | android_os.Process |
android.os.StatFs | android_os.StatFs |
android.os.SystemClock | android_os.SystemClock |
android.os.UserManager | android_os.UserManager |
android.os.VibrationEffect | android_os.VibrationEffect |
android.os.Vibrator | android_os.Vibrator |
android.provider | android_provider |
android.security | android_security |
android.speech | android_speech |
android.telephony | android_telephony |
android.view | android_view |
java.util.Locale | dart-ui.Locale |
See Also
- The win32 package provides bindings to the most common Win32 APIs.
Libraries
- android
- Android bindings for Flutter.
- android_app
- Contains high-level classes encapsulating the overall Android application model.
- android_bluetooth
- Provides classes that manage Bluetooth functionality, such as scanning for devices, connecting with devices, and managing data transfer between devices.
- android_content
- Contains classes for accessing and publishing data on a device.
- android_database
- Contains classes to explore data returned through a content provider.
- android_graphics
- Provides low level graphics tools such as canvases, color filters, points, and rectangles that let you handle drawing to the screen directly.
- android_hardware
- Provides support for hardware features, such as the camera and other sensors.
- android_location
- Contains the framework API classes that define Android location-based and related services.
- android_media
- Provides classes that manage various media interfaces in audio and video.
- android_net
- Classes that help with network access.
- android_nfc
- Provides access to Near Field Communication (NFC) functionality, allowing applications to read NDEF message in NFC tags.
- android_os
- Provides basic operating system services, message passing, and inter-process communication on the device.
- android_provider
- Provides convenience classes to access the content providers supplied by Android.
- android_security
- Provides access to a few facilities of the Android security subsystems.
- android_speech
- Provides access to the speech recognition service.
- android_telephony
- Provides APIs for monitoring the basic phone information, such as the network type and connection state, plus utilities for manipulating phone number strings.
- android_view
- Provides classes that expose basic user interface classes that handle screen layout and interaction with the user.