Skip to content

Repository files navigation

tizen_interop

pub package

Provides Dart bindings for Tizen native APIs, powered by ffigen.

Usage

To use this package, add ffi and tizen_interop as dependencies in your pubspec.yaml file.

dependencies:
  ffi: ^2.0.1
  tizen_interop: ^0.5.1

Then, import package:ffi/ffi.dart and package:tizen_interop/[TIZEN_VERSION]/tizen.dart in your Dart code.

import 'package:ffi/ffi.dart';
import 'package:tizen_interop/6.0/tizen.dart';

Examples

// Getting a string value from the Native API.
// Prefer using `arena` to allocate memory because it frees the memory
// automatically when the `using` block ends.
String appName = using((Arena arena) {
  Pointer<Pointer<Char>> ppStr = arena();
  if (tizenCapiAppfwAppCommon.app_get_name(ppStr) == 0) {
    // The memory allocated by the Native API must be freed by the caller.
    arena.using(ppStr.value, calloc.free);
    return ppStr.value.toDartString();
  }
  return 'unknown';
});

// Passing a string value to the Native API.
// The memory allocated by the `toNativeChar` method must be freed by
// the caller. The `arena` allocator will free it automatically.
using((Arena arena) {
  Pointer<Char> pKey =
      'tizen_interop_test_key_for_int'.toNativeChar(allocator: arena);
  tizenCapiAppfwPreference.preference_set_int(pKey, 100);
});

// Getting an integer value from the Native API.
int preferenceValue = using((Arena arena) {
  Pointer<Char> pKey =
      'tizen_interop_test_key_for_int'.toNativeChar(allocator: arena);
  Pointer<Int> pValue = arena();
  if (tizenCapiAppfwPreference.preference_get_int(pKey, pValue) == 0) {
    return pValue.value;
  }
  return 0;
});

// Getting a struct value from the Native API.
int freeMemory = using((Arena arena) {
  Pointer<runtime_memory_info_s> pMemInfo = arena();
  if (tizenCapiSystemRuntimeInfo.runtime_info_get_system_memory_info(pMemInfo) == 0) {
    return pMemInfo.ref.free;
  }
  return 0;
});

// Both sync and async callbacks are supported as long as they are called on
// the same thread.
tizenStorage.storage_foreach_device_supported(
    Pointer.fromFunction(_storageDevice, false), nullptr);

// Callbacks that are called outside the current thread will cause the error:
// "Cannot invoke native callback outside an isolate".
// See the tizen_interop_callbacks package for a solution.

Note: To find the correct getter for a specific API, please refer to the doc/tizen{version}_api.md file (e.g., doc/tizen6.0_api.md).

Warning: Currently, the package is under development. All getters instance the same TizenNative class, so you can technically access APIs from other modules through any getter. However, doing so will cause a runtime warning. Please use the correct getter for each API to avoid future compatibility issues.

Supported APIs

This package provides bindings for the following APIs of the Tizen IoT-Headed (or Common for Tizen 8.0 ~ 9.0 and Tizen 10.0) profile.

Note: UI and WebView related APIs are not included.

Category Sub category Tizen 6.0 Tizen 6.5 Tizen 7.0 Tizen 8.0 Tizen 9.0 Tizen 10.0
Account Account Manager ✔ ✔ ✔ ✔ ✔ ✔
FIDO Client ✔ ✔ ✔ ✔ ✔ ✔
Account Manager ✔ ✔ ✔ ✔ ✔ ✔
OAuth 2.0 ✔ ✔ ✔ ✔ ✔ ✔
Sync Manager ✔ ✔ ✔ ✔ ✔ ✔
Application Framework Application ✔ ✔ ✔ ✔ ✔ ✔
Alarm ✔ ✔ ✔ ✔ ✔ ✔
App Common ✔ ✔ ✔ ✔ ✔ ✔
App Control ✔ ✔ ✔ ✔ ✔ ✔
App Control URI ✔ ✔ ✔ ✔ ✔
Event ✔ ✔ ✔ ✔ ✔ ✔
Internationalization ✔ ✔ ✔ ✔ ✔ ✔
Job scheduler ✔ ✔ ✔ ✔ ✔ ✔
Preference ✔ ✔ ✔ ✔ ✔ ✔
Resource Manager ✔ ✔ ✔ ✔ ✔ ✔
Application Manager ✔ ✔ ✔ ✔ ✔ ✔
Attach panel
Badge ✔ ✔ ✔ ✔ ✔ ✔
Bundle ✔ ✔ ✔ ✔ ✔ ✔
Cion ✔ ✔ ✔ ✔ ✔
Component Based Application
Component Manager
Data Control ✔ ✔ ✔ ✔ ✔ ✔
Message Port ✔ ✔ ✔ ✔ ✔ ✔
Notification ✔ ✔ ✔ ✔ ✔ ✔
Notification EX ✔ ✔ ✔ ✔ ✔ ✔
Package Manager ✔ ✔ ✔ ✔ ✔ ✔
RPC Port ✔ ✔ ✔ ✔ ✔ ✔
Service Application ✔ ✔ ✔ ✔ ✔ ✔
Shortcut ✔ ✔ ✔ ✔
Tizen Core ✔ ✔
Widget
Base Common Error ✔ ✔ ✔ ✔ ✔ ✔
Utils
Content Download ✔ ✔ ✔ ✔ ✔ ✔
MIME Type ✔ ✔ ✔ ✔ ✔ ✔
Media Content ✔ ✔ ✔ ✔ ✔ ✔
Context Activity Recognition ✔
Contextual History ✔ ✔ ✔ ✔ ✔ ✔
Contextual Trigger ✔ ✔ ✔ ✔ ✔ ✔
Gesture Recognition ✔
Location Geofence Manager ✔ ✔ ✔ ✔ ✔
Location Manager ✔ ✔ ✔ ✔ ✔ ✔
Maps Service
Machine Learning Pipeline ✔ ✔ ✔ ✔ ✔
Service ✔ ✔ ✔ ✔
Single ✔ ✔ ✔ ✔ ✔
Trainer ✔ ✔ ✔ ✔ ✔
Messaging Email ✔ ✔ ✔ ✔ ✔
Messages
Push ✔ ✔ ✔ ✔ ✔ ✔
Multimedia Audio I/O ✔ ✔ ✔ ✔ ✔ ✔
Camera ✔ ✔ ✔ ✔ ✔ ✔
Image Util ✔ ✔ ✔ ✔ ✔ ✔
Media Codec ✔ ✔ ✔ ✔ ✔ ✔
Media Controller ✔ ✔ ✔ ✔ ✔ ✔
Media Demuxer ✔ ✔ ✔ ✔ ✔ ✔
Media Muxer ✔ ✔ ✔ ✔ ✔ ✔
Media Streamer ✔ ✔ ✔ ✔
Media Tool ✔ ✔ ✔ ✔ ✔ ✔
Media Vision ✔ ✔ ✔ ✔ ✔ ✔
Media Editor ✔ ✔ ✔ ✔
Metadata Editor ✔ ✔ ✔ ✔ ✔ ✔
Metadata Extractor ✔ ✔ ✔ ✔ ✔ ✔
OpenAL Tizen ✔
Player ✔ ✔ ✔ ✔ ✔ ✔
Radio ✔ ✔ ✔ ✔ ✔ ✔
Recorder ✔ ✔ ✔ ✔ ✔ ✔
Screen Mirroring ✔ ✔ ✔ ✔ ✔ ✔
Sound Manager ✔ ✔ ✔ ✔ ✔ ✔
Sound Pool ✔ ✔ ✔ ✔ ✔ ✔
StreamRecorder ✔ ✔ ✔ ✔
Thumbnail Util ✔ ✔ ✔ ✔ ✔ ✔
Tone Player ✔ ✔ ✔ ✔ ✔ ✔
Video Util
WAV Player ✔ ✔ ✔ ✔ ✔ ✔
WebRTC ✔ ✔ ✔ ✔ ✔
Network Application Service Platform ✔ ✔ ✔ ✔ ✔ ✔
Bluetooth ✔ ✔ ✔ ✔ ✔ ✔
Connection ✔ ✔ ✔ ✔ ✔ ✔
DNSSD ✔ ✔ ✔ ✔ ✔ ✔
HTTP ✔ ✔ ✔ ✔ ✔ ✔
Intelligent Network Monitoring ✔ ✔ ✔ ✔ ✔ ✔
IoTCon ✔ ✔ ✔ ✔ ✔ ✔
MTP ✔ ✔ ✔ ✔ ✔ ✔
NFC ✔ ✔
SSDP ✔ ✔ ✔ ✔ ✔ ✔
Smart Traffic Control ✔ ✔ ✔ ✔ ✔ ✔
Smartcard
SoftAP ✔ ✔ ✔ ✔ ✔ ✔
User Awareness
VPN Service ✔ ✔ ✔ ✔ ✔ ✔
Wi-Fi ✔ ✔ ✔ ✔ ✔ ✔
Wi-Fi Aware ✔ ✔
Wi-Fi Direct ✔ ✔ ✔ ✔ ✔ ✔
Security CSR ✔ ✔ ✔ ✔ ✔
Device Certificate Manager ✔ ✔ ✔ ✔ ✔ ✔
Device Policy Manager ✔ ✔ ✔ ✔ ✔ ✔
Key Manager ✔ ✔ ✔ ✔ ✔ ✔
Key Manager Extened ✔ ✔
Privacy Privilege Manager ✔ ✔ ✔ ✔ ✔ ✔
Privilege Info ✔ ✔ ✔ ✔ ✔ ✔
Web Authentication ✔ ✔
YACA ✔ ✔ ✔ ✔ ✔ ✔
Social Calendar ✔ ✔ ✔ ✔ ✔ ✔
Contacts ✔ ✔ ✔ ✔ ✔ ✔
Phonenumber utils ✔ ✔ ✔ ✔ ✔ ✔
System Device ✔ ✔ ✔ ✔ ✔ ✔
Diagnostics ✔ ✔ ✔ ✔
Dlog ✔ ✔ ✔ ✔ ✔ ✔
Feedback ✔ ✔ ✔ ✔ ✔ ✔
Media key ✔ ✔ ✔ ✔ ✔ ✔
Monitor ✔ ✔ ✔ ✔
Peripheral IO ✔ ✔ ✔ ✔ ✔ ✔
Runtime information ✔ ✔ ✔ ✔ ✔ ✔
Sensor ✔ ✔ ✔ ✔ ✔ ✔
Storage ✔ ✔ ✔ ✔ ✔ ✔
System Information ✔ ✔ ✔ ✔ ✔ ✔
System Settings ✔ ✔ ✔ ✔ ✔ ✔
T-trace ✔ ✔ ✔ ✔ ✔ ✔
USB Host ✔ ✔ ✔ ✔ ✔ ✔
Update Control ✔ ✔ ✔ ✔ ✔ ✔
Telephony Telephony Information
UI Clipboard History Manager ✔ ✔ ✔
DALi
EFL
External Output Manager ✔ ✔ ✔ ✔ ✔
Minicontrol
TBM Surface ✔ ✔ ✔ ✔ ✔ ✔
Tizen WS Shell
UI View Manager
UIX Autofill ✔ ✔ ✔ ✔ ✔ ✔
Input Method ✔ ✔ ✔ ✔ ✔ ✔
Input Method Manager ✔ ✔ ✔ ✔ ✔ ✔
MMI ✔ ✔
Multi assistant ✔ ✔ ✔ ✔ ✔ ✔
STT ✔ ✔ ✔ ✔ ✔ ✔
STT Engine ✔ ✔ ✔ ✔ ✔ ✔
Sticker
TTS ✔ ✔ ✔ ✔ ✔ ✔
TTS Engine ✔ ✔ ✔ ✔ ✔ ✔
Voice control ✔ ✔ ✔ ✔ ✔ ✔
Voice control elementary ✔
Voice control engine ✔ ✔ ✔ ✔ ✔ ✔
Voice control manager ✔ ✔ ✔ ✔ ✔ ✔

About

Dart bindings for Tizen C APIs

Topics

Resources

Stars

8 stars

Watchers

11 watching

Forks

Releases

Used by

Contributors

Languages