mirror of
https://github.com/rust-mobile/android-activity.git
synced 2026-07-15 19:18:54 +00:00
8.5 KiB
8.5 KiB
Changelog
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.5.0] - 2023-10-16
Added
- Added
MotionEvent::action_button()exposing the button associated with button press/release actions ()
Changed
- rust-version bumped to 0.68 (#123)
- Breaking: updates to
ndk 0.8andndk-sys 0.5(#128) - The
PointerandPointerItertypes from thendkcrate are no longer directly exposed in the public API (#122) - All input API enums based on Android SDK enums have been made runtime extensible via hidden
__Unknown(u32)variants (#131)
[0.5.0-beta.1] - 2023-08-15
Changed
- Pulled in
ndk-sys 0.5.0-beta.0andndk 0.8.0-beta.0(#113)
[0.5.0-beta.0] - 2023-08-15
Added
-
Added
KeyEvent::meta_state()for being able to query the state of meta keys, needed for character mapping (#102) -
Added
KeyCharacterMapJNI bindings to the corresponding Android SDK API (#102) -
Added
AndroidApp::device_key_character_map()for being able to get aKeyCharacterMapfor a givendevice_idfor unicode character mapping (#102)Click here for an example of how to handle unicode character mapping:
let mut combining_accent = None; // Snip let combined_key_char = if let Ok(map) = app.device_key_character_map(device_id) { match map.get(key_event.key_code(), key_event.meta_state()) { Ok(KeyMapChar::Unicode(unicode)) => { let combined_unicode = if let Some(accent) = combining_accent { match map.get_dead_char(accent, unicode) { Ok(Some(key)) => { info!("KeyEvent: Combined '{unicode}' with accent '{accent}' to give '{key}'"); Some(key) } Ok(None) => None, Err(err) => { log::error!("KeyEvent: Failed to combine 'dead key' accent '{accent}' with '{unicode}': {err:?}"); None } } } else { info!("KeyEvent: Pressed '{unicode}'"); Some(unicode) }; combining_accent = None; combined_unicode.map(|unicode| KeyMapChar::Unicode(unicode)) } Ok(KeyMapChar::CombiningAccent(accent)) => { info!("KeyEvent: Pressed 'dead key' combining accent '{accent}'"); combining_accent = Some(accent); Some(KeyMapChar::CombiningAccent(accent)) } Ok(KeyMapChar::None) => { info!("KeyEvent: Pressed non-unicode key"); combining_accent = None; None } Err(err) => { log::error!("KeyEvent: Failed to get key map character: {err:?}"); combining_accent = None; None } } } else { None }; -
Added
TextEventInput Method event for supporting text editing via virtual keyboards (#24)
Changed
-
GameActivity updated to 2.0.2 (requires the corresponding 2.0.2
.aarrelease from Google) (#88) -
AndroidApp::input_events()is replaced byAndroidApp::input_events_iter()(#102)Click here for an example of how to use `input_events_iter()`:
match app.input_events_iter() { Ok(mut iter) => { loop { let read_input = iter.next(|event| { let handled = match event { InputEvent::KeyEvent(key_event) => { // Snip } InputEvent::MotionEvent(motion_event) => { // Snip } event => { // Snip } }; handled }); if !read_input { break; } } } Err(err) => { log::error!("Failed to get input events iterator: {err:?}"); } }
[0.4.3] - 2023-07-30
Fixed
- Fixed a deadlock in the
native-activitybackend while waiting for the native thread after getting anonDestroycallback from Java (#94) - Fixed numerous deadlocks in the
game-activitybackend with how it would wait for the native thread in various Java callbacks, after the app has returned fromandroid_main(#98)
[0.4.2] - 2023-06-17
Changed
- The
Activity.finish()method is now called whenandroid_mainreturns so theActivitywill be destroyed (#67) - The
native-activitybackend now propagatesNativeWindowredraw/resize andContentRectChangedcallbacks to main loop (#70) - The
game-activityimplementation ofpointer_index()was fixed to not always return0(#80) - Added
panicguards around application'sandroid_main()and native code that could potentially unwind across a Java FFI boundary (#68)
[0.4.1] - 2023-02-16
Added
- Added
AndroidApp::vm_as_ptr()to expose JNIJavaVMpointer (#60) - Added
AndroidApp::activity_as_ptr()to expose AndroidActivityJNI reference as pointer (#60)
Changed
- Removed some overly-verbose logging in the
native-activitybackend (#49)
Removed
- Most of the examples were moved to https://github.com/rust-mobile/rust-android-examples (#50)
[0.4] - 2022-11-10
Changed
- Breaking:
input_eventscallback now return whether an event was handled or not to allow for fallback handling (#31) - The native-activity backend is now implemented in Rust only, without building on
android_native_app_glue.c(#35)
Added
- Added
Pointer::tool_type()API toGameActivitybackend for compatibility withndkevents API (#38)
[0.3] - 2022-09-15
Added
show/hide_sot_inputAPI for being able to show/hide a soft keyboard (other IME still pending)set_window_flags()API for setting WindowManager params
Changed
- Breaking: Created extensible,
#[non_exhaustive]InputEventwrapper enum instead of exposingndktype directly
[0.2] - 2022-08-25
Added
- Emit an
InputAvailableevent for new input withNativeActivityandGameActivityenabling gui apps that don't render continuously - Oboe and Cpal audio examples added
AndroidAppis nowSend+Sync
Changed
- Breaking: updates to
ndk 0.7andndk-sys 0.4 - Breaking:
AndroidApp::config()now returns a clonableConfigurationRefinstead of a deepConfigurationcopy
Removed
- The
NativeWindowRefwrapper struct was removed sinceNativeWindownow implementsCloneandDropinndk 0.7 - Breaking: The
FdEventandErrorenum values were removed fromPollEvents
[0.1.1] - 2022-07-04
Changed
- Documentation fixes
[0.1] - 2022-07-04
Added
- Initial release