#!/bin/bash
set -e
PACKAGE="com.google.oboe.samples.powerplay"
ACTIVITY="${PACKAGE}/.MainActivity"
LOG_TAG="PowerPlay"
TEST_DURATION_MS=10000
echo "=== PowerPlay Automation Test ==="
echo ""
if ! adb devices | grep -q "device$"; then
echo "ERROR: No Android device connected"
exit 1
fi
echo "[1/6] Checking if PowerPlay is installed..."
if ! adb shell pm list packages | grep -q "$PACKAGE"; then
echo "ERROR: PowerPlay is not installed. Please run:"
echo " cd samples/powerplay && ../../gradlew installDebug"
exit 1
fi
echo " ✓ PowerPlay is installed"
echo ""
echo "[2/6] Force-stopping any existing instance..."
adb shell am force-stop "$PACKAGE"
sleep 1
echo " ✓ App stopped"
echo ""
echo "[3/6] Starting playback with PCM Offload mode..."
adb shell am start -n "$ACTIVITY" \
--es command play \
--es perf_mode offload \
--ei duration_ms "$TEST_DURATION_MS" \
--ei volume 75
echo " ✓ Play command sent"
echo ""
echo "[4/6] Monitoring status (waiting for ${TEST_DURATION_MS}ms)..."
echo "---"
timeout $((TEST_DURATION_MS / 1000 + 2)) adb logcat -s "$LOG_TAG:V" 2>/dev/null | while read -r line; do
if echo "$line" | grep -q "POWERPLAY_STATUS"; then
echo " LOG: $line"
fi
done || true
echo "---"
echo " ✓ Test duration completed"
echo ""
echo "[5/6] Verifying playback stopped..."
FINAL_STATUS=$(adb logcat -d -s "$LOG_TAG:V" | grep "POWERPLAY_STATUS" | tail -1)
if echo "$FINAL_STATUS" | grep -q "STOPPED"; then
echo " ✓ Playback stopped correctly"
else
echo " ⚠ Last status: $FINAL_STATUS"
fi
echo ""
echo "[6/6] Checking offload status from logs..."
if adb logcat -d -s "$LOG_TAG:V" | grep -q "OFFLOAD=true"; then
echo " ✓ PCM Offload was active during playback"
else
echo " ⚠ PCM Offload may not have been active (device might not support it)"
fi
echo ""
echo "=== Test Complete ==="
echo ""
echo "Full logs saved to: powerplay_test.log"
adb logcat -d -s "$LOG_TAG:V" > powerplay_test.log
echo ""
echo "To run additional tests:"
echo " # Background playback"
echo " adb shell am start -n $ACTIVITY --es command play --es perf_mode offload --ez background true"