#[cfg(target_os = "android")]
fn main() {
use std::time::{Duration, Instant};
match coreshift_core::binder::PlaybackCallback::open() {
Err(e) => {
println!("playback_callback=ERR open {e}");
return;
}
Ok((cb, efd)) => {
println!("playback_callback=open ok");
if let Err(e) = efd.set_nonblock() {
println!("playback_callback=ERR set_nonblock {e}");
}
match cb.register() {
Err(e) => {
println!("playback_callback=ERR register {e}");
return;
}
Ok(()) => println!("playback_callback=registered"),
}
let start = Instant::now();
let mut last = None;
while start.elapsed() < Duration::from_secs(6) {
let mut wakes = 0u64;
while let Ok(Some(v)) = efd.read_u64() {
wakes += v;
}
if wakes > 0 {
println!("playback_callback=wake wakes={wakes}");
}
let now = cb.audio_active();
if Some(now) != last {
last = Some(now);
println!("playback_callback=active={now}");
}
std::thread::sleep(Duration::from_millis(200));
}
match cb.unregister() {
Err(e) => println!("playback_callback=ERR unregister {e}"),
Ok(()) => println!("playback_callback=unregistered"),
}
}
}
}
#[cfg(not(target_os = "android"))]
fn main() {
eprintln!("audio_callback_probe: android-only (binder callback)");
}