refactor android ffi

This commit is contained in:
rustdesk 2024-04-15 15:20:27 +08:00
parent 0dba37f4f7
commit cdd92303b8
3 changed files with 25 additions and 22 deletions

View File

@ -1,5 +1,7 @@
package com.carriez.flutter_hbb package com.carriez.flutter_hbb
import ffi.*
/** /**
* Capture screen,get video and audio,send to rust. * Capture screen,get video and audio,send to rust.
* Dispatch notifications * Dispatch notifications
@ -64,10 +66,6 @@ const val AUDIO_CHANNEL_MASK = AudioFormat.CHANNEL_IN_STEREO
class MainService : Service() { class MainService : Service() {
init {
System.loadLibrary("rustdesk")
}
@Keep @Keep
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
fun rustPointerInput(kind: String, mask: Int, x: Int, y: Int) { fun rustPointerInput(kind: String, mask: Int, x: Int, y: Int) {
@ -156,20 +154,6 @@ class MainService : Service() {
private val powerManager: PowerManager by lazy { applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager } private val powerManager: PowerManager by lazy { applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager }
private val wakeLock: PowerManager.WakeLock by lazy { powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP or PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "rustdesk:wakelock")} private val wakeLock: PowerManager.WakeLock by lazy { powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP or PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "rustdesk:wakelock")}
// jvm call rust
private external fun init(ctx: Context)
/// When app start on boot, app_dir will not be passed from flutter
/// so pass a app_dir here to rust server
private external fun startServer(app_dir: String)
private external fun startService()
private external fun onVideoFrameUpdate(buf: ByteBuffer)
private external fun onAudioFrameUpdate(buf: ByteBuffer)
private external fun translateLocale(localeName: String, input: String): String
private external fun refreshScreen()
private external fun setFrameRawEnable(name: String, value: Boolean)
// private external fun sendVp9(data: ByteArray)
private fun translate(input: String): String { private fun translate(input: String): String {
Log.d(logTag, "translate:$LOCAL_NAME") Log.d(logTag, "translate:$LOCAL_NAME")
return translateLocale(LOCAL_NAME, input) return translateLocale(LOCAL_NAME, input)

View File

@ -0,0 +1,19 @@
// ffi.kt
package ffi
import android.content.Context
import java.nio.ByteBuffer
init {
System.loadLibrary("rustdesk")
}
external fun init(ctx: Context)
external fun startServer(app_dir: String)
external fun startService()
external fun onVideoFrameUpdate(buf: ByteBuffer)
external fun onAudioFrameUpdate(buf: ByteBuffer)
external fun translateLocale(localeName: String, input: String): String
external fun refreshScreen()
external fun setFrameRawEnable(name: String, value: Boolean)

View File

@ -2108,7 +2108,7 @@ pub mod server_side {
use crate::start_server; use crate::start_server;
#[no_mangle] #[no_mangle]
pub unsafe extern "system" fn Java_com_carriez_flutter_1hbb_MainService_startServer( pub unsafe extern "system" fn Java_ffi_startServer(
env: JNIEnv, env: JNIEnv,
_class: JClass, _class: JClass,
app_dir: JString, app_dir: JString,
@ -2122,7 +2122,7 @@ pub mod server_side {
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "system" fn Java_com_carriez_flutter_1hbb_MainService_startService( pub unsafe extern "system" fn Java_ffi_startService(
_env: JNIEnv, _env: JNIEnv,
_class: JClass, _class: JClass,
) { ) {
@ -2132,7 +2132,7 @@ pub mod server_side {
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "system" fn Java_com_carriez_flutter_1hbb_MainService_translateLocale( pub unsafe extern "system" fn Java_ffi_translateLocale(
env: JNIEnv, env: JNIEnv,
_class: JClass, _class: JClass,
locale: JString, locale: JString,
@ -2151,7 +2151,7 @@ pub mod server_side {
} }
#[no_mangle] #[no_mangle]
pub unsafe extern "system" fn Java_com_carriez_flutter_1hbb_MainService_refreshScreen( pub unsafe extern "system" fn Java_ffi_refreshScreen(
_env: JNIEnv, _env: JNIEnv,
_class: JClass, _class: JClass,
) { ) {