ITADN
rust-mobile/android-activity

版本发布 8

v0.6.0
? · 2024-04-26

## What's Changed * Bump MSRV to 1.69.0 considering we can't build cargo ndk with 1.68 by @rib in https://github.com/rust-mobile/android-activity/pull/156 * Upgrade to `ndk-sys 0.6.0` and `ndk 0.9.0` by @MarijnS95 in https://github.com/rust-mobile/android-activity/pull/155 * native-activity: Check for null `saved_state_in` pointer by @skibon02 in https://github.com/rust-mobile/android-activity/pull/157 * Release 0.6.0 by @rib in https://github.com/rust-mobile/android-activity/pull/158 ## New Contributors * @skibon02 made their first contribution in https://github.com/rust-mobile/android-activity/pull/157 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.5.2...v0.6.0

android-activity 0.5.2v0.5.2
? · 2024-01-31

## What's Changed * native-activity/input: AND with `EVENT_ACTION_MASK` when extracting MotionEvent action by @ArthurCose in https://github.com/rust-mobile/android-activity/pull/147 ## New Contributors * @ArthurCose made their first contribution in https://github.com/rust-mobile/android-activity/pull/147 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.5.1...v0.5.2

android-activity 0.5.1v0.5.1
? · 2023-12-20

### Changed - Avoids depending on default features for `ndk` crate to avoid pulling in any `raw-window-handle` dependencies ([#142](https://github.com/rust-mobile/android-activity/pull/142)) **Note:** Technically, this could be observed as a breaking change in case you were depending on the `rwh_06` feature that was enabled by default in the `ndk` crate. This could be observed via the `NativeWindow` type (exposed via `AndroidApp::native_window()`) no longer implementing `rwh_06::HasWindowHandle`. In the unlikely case that you were depending on the `ndk`'s `rwh_06` API being enabled by default via `android-activity`'s `ndk` dependency, your crate should explicitly enable the `rwh_06` feature for the `ndk` crate. As far as could be seen though, it's not expected that anything was depending on this (e.g. anything based on Winit enables the `ndk` feature based on an equivalent `winit` feature). The benefit of the change is that it can help avoid a redundant `raw-window-handle 0.6` dependency in projects that still need to use older (non-default) `raw-window-handle` versions. (Though note that this may be awkward to achieve in practice since other crates that depend on the `ndk` are still likely to use default features and also pull in `raw-window-handles 0.6`) - The IO thread now gets named `stdio-to-logcat` and main thread is named `android_main` ([#145](https://github.com/rust-mobile/android-activity/pull/145)) - Improved IO error handling in `stdio-to-logcat` IO loop. ([#133](https://github.com/rust-mobile/android-activity/pull/133)) ## New Contributors * @Vrixyz made their first contribution in https://github.com/rust-mobile/android-activity/pull/142 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.5.0...v0.5.1

android-activity 0.5.0v0.5.0
? · 2023-10-16

Probably the most notable (breaking) change in this release is the updated API for reading input events to better support being able to use other `AndroidApp` APIs while iterating input events, to support unicode character mapping for `Keycodes`. The other big change with this release is the update of the `game-activity` backend, updating to GameActivity 2.0.2. Applications using the `game-activity` backend will need to ensure they pull in the corresponding 2.0.2 `.aar` from Google (For example, see https://github.com/rust-mobile/android-activity/blob/main/examples/agdk-mainloop/app/build.gradle) ### Added - Added `KeyEvent::meta_state()` for being able to query the state of meta keys, needed for character mapping ([#102](https://github.com/rust-mobile/android-activity/pull/102)) - Added `KeyCharacterMap` JNI bindings to the corresponding Android SDK API ([#102](https://github.com/rust-mobile/android-activity/pull/102)) - Added `AndroidApp::device_key_character_map()` for being able to get a `KeyCharacterMap` for a given `device_id` for unicode character mapping ([#102](https://github.com/rust-mobile/android-activity/pull/102)) <details> <summary>Click here for an example of how to handle unicode character mapping:</summary> ```rust 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 }; ``` </details> - Added `TextEvent` Input Method event for supporting text editing via virtual keyboards ([#24](https://github.com/rust-mobile/android-activity/pull/24)) - Added `MotionEvent::action_button()` exposing the button associated with button press/release actions ([#138](https://github.com/rust-mobile/android-activity/pull/138)) ### Changed - rust-version bumped to 0.68 ([#123](https://github.com/rust-mobile/android-activity/pull/123)) - *Breaking*: update to `ndk 0.8` and `ndk-sys 0.5` ([#128](https://github.com/rust-mobile/android-activity/pull/128)) - GameActivity updated to 2.0.2 (requires the corresponding 2.0.2 `.aar` release from Google) ([#88](https://github.com/rust-mobile/android-activity/pull/88)) - `AndroidApp::input_events()` is replaced by `AndroidApp::input_events_iter()` ([#102](https://github.com/rust-mobile/android-activity/pull/102)) <details> <summary>Click here for an example of how to use `input_events_iter()`:</summary> ```rust 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:?}"); } } ``` </details> - The `Pointer` and `PointerIter` types from the `ndk` crate are no longer directly exposed in the public API ([#122](https://github.com/rust-mobile/android-activity/pull/122)) - All input API enums based on Android SDK enums have been made runtime extensible via hidden `__Unknown(u32)` variants ([#131](https://github.com/rust-mobile/android-activity/pull/131)) ## New Contributors * @lexi-the-cute made their first contribution in https://github.com/rust-mobile/android-activity/pull/88 * @daxpedda made their first contribution in https://github.com/rust-mobile/android-activity/pull/85 * @fornwall made their first contribution in https://github.com/rust-mobile/android-activity/pull/124 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.4.3...v0.5.0

android-activity 0.5.0-beta.1v0.5.0-beta.1预发布
? · 2023-08-15

This only updates the `ndk` and `ndk-sys` dependencies to pull in `ndk 0.8.0-beta.0` and `ndk-sys 0.5.0-beta.0`

android-activity 0.5.0-beta.0v0.5.0-beta.0预发布
? · 2023-08-15

This is the first 0.5.0 beta that's aiming to be ready for the upcoming Winit 0.29 release The main reason that a (breaking) semver bump was required was so we could update the API for reading input events to better support being able to use other AndroidApp APIs while iterating input events, to support unicode character mapping for Keycodes. A big change with this release is the update of the `game-activity` backend, updating to GameActivity 2.0.2. Applications using the `game-activity` backend will need to ensure they pull in the corresponding 2.0.2 `.aab` from Google (For example, see https://github.com/rust-mobile/android-activity/blob/main/examples/agdk-mainloop/app/build.gradle) ### Added - Added `KeyEvent::meta_state()` for being able to query the state of meta keys, needed for character mapping ([#102](https://github.com/rust-mobile/android-activity/pull/102)) - Added `KeyCharacterMap` JNI bindings to the corresponding Android SDK API ([#102](https://github.com/rust-mobile/android-activity/pull/102)) - Added `AndroidApp::device_key_character_map()` for being able to get a `KeyCharacterMap` for a given `device_id` for unicode character mapping ([#102](https://github.com/rust-mobile/android-activity/pull/102)) <details> <summary>Click here for an example of how to handle unicode character mapping:</summary> ```rust 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 }; ``` </details> ### Changed - GameActivity updated to 2.0.2 (requires the corresponding 2.0.2 `.aar` release from Google) ([#88](https://github.com/rust-mobile/android-activity/pull/88)) - `AndroidApp::input_events()` is replaced by `AndroidApp::input_events_iter()` ([#102](https://github.com/rust-mobile/android-activity/pull/102)) <details> <summary>Click here for an example of how to use `input_events_iter()`:</summary> ```rust 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:?}"); } } ``` </details> ## New Contributors * @lexi-the-cute made their first contribution in https://github.com/rust-mobile/android-activity/pull/88 * @daxpedda made their first contribution in https://github.com/rust-mobile/android-activity/pull/85 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.4.3...v0.5.0-beta.0

android-activity 0.4.3v0.4.3
? · 2023-07-30

## What's Changed * Fix deadlock on activity onDestroy by @sagebind in https://github.com/rust-mobile/android-activity/pull/94 * GameActivity PATCH: fix deadlocks in java callbacks after app destroyed by @rib in https://github.com/rust-mobile/android-activity/pull/98 ## New Contributors * @sagebind made their first contribution in https://github.com/rust-mobile/android-activity/pull/94 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.4.2...v0.4.3

android-activity 0.4.2v0.4.2
? · 2023-06-27

## What's Changed * Add dependabot support by @notgull in https://github.com/rust-mobile/android-activity/pull/72 * native-activity: Propagate `NativeWindow` redraw/resize and `ContentRectChanged` callbacks to main loop by @MarijnS95 in https://github.com/rust-mobile/android-activity/pull/70 * Add MSRV policy to README and bump `rust_version` to 1.64, due to `ndk` -> `raw_window_handle` dependency by @rib in https://github.com/rust-mobile/android-activity/pull/76 * build(deps): update num_enum requirement from 0.5 to 0.6 by @dependabot in https://github.com/rust-mobile/android-activity/pull/74 * build(deps): bump actions/checkout from 2 to 3 by @dependabot in https://github.com/rust-mobile/android-activity/pull/73 * Fix rust_version typo s/0.64/1.64/ by @rib in https://github.com/rust-mobile/android-activity/pull/77 * Add panic guards to extern "C" functions by @notgull in https://github.com/rust-mobile/android-activity/pull/68 * game_activity: Fix `pointer_index()` always returning `0` by @yunsash in https://github.com/rust-mobile/android-activity/pull/84 * README: Add badges to CI, crates.io, docs.rs and show the MSRV by @MarijnS95 in https://github.com/rust-mobile/android-activity/pull/86 * Call Activity.finish() when android_main returns by @rib in https://github.com/rust-mobile/android-activity/pull/81 * cargo: Fix `rust_version` -> `rust-version` property typo by @MarijnS95 in https://github.com/rust-mobile/android-activity/pull/87 * Release 0.4.2 by @rib in https://github.com/rust-mobile/android-activity/pull/90 ## New Contributors * @notgull made their first contribution in https://github.com/rust-mobile/android-activity/pull/72 * @dependabot made their first contribution in https://github.com/rust-mobile/android-activity/pull/74 - good bot 🤖 * @yunsash made their first contribution in https://github.com/rust-mobile/android-activity/pull/84 **Full Changelog**: https://github.com/rust-mobile/android-activity/compare/v0.4.1...v0.4.2