From ca4439ff65bdc93fc44f4cc1be52aab50217ce78 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sat, 7 Aug 2010 21:30:22 +0000 Subject: Android port: handle incoming calls. Stop explicitely if a call comes in, and resume playback (if it was playing before the call) upon hang up. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27746 a1c6a512-1295-4272-9138-f99709370657 --- android/src/org/rockbox/RockboxTimer.java | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'android') diff --git a/android/src/org/rockbox/RockboxTimer.java b/android/src/org/rockbox/RockboxTimer.java index 6491e4f..68a0e86 100644 --- a/android/src/org/rockbox/RockboxTimer.java +++ b/android/src/org/rockbox/RockboxTimer.java @@ -24,6 +24,8 @@ package org.rockbox; import java.util.Timer; import java.util.TimerTask; +import android.content.Context; +import android.telephony.TelephonyManager; import android.util.Log; public class RockboxTimer extends Timer @@ -33,24 +35,42 @@ public class RockboxTimer extends Timer private class RockboxTimerTask extends TimerTask { private RockboxTimer t; - public RockboxTimerTask(RockboxTimer parent) { + private TelephonyManager tm; + private int last_state; + public RockboxTimerTask(RockboxService s, RockboxTimer parent) { super(); t = parent; + tm = (TelephonyManager)s.getSystemService(Context.TELEPHONY_SERVICE); + last_state = tm.getCallState(); } @Override public void run() { timerTask(); + int state = tm.getCallState(); + if (state != last_state) + { + switch (state) { + case TelephonyManager.CALL_STATE_IDLE: + postCallHungUp(); + break; + case TelephonyManager.CALL_STATE_RINGING: + postCallIncoming(); + default: + break; + } + last_state = state; + } synchronized(t) { t.notify(); } } } - public RockboxTimer(long period_inverval_in_ms) + public RockboxTimer(RockboxService instance, long period_inverval_in_ms) { super("tick timer", false); - task = new RockboxTimerTask(this); + task = new RockboxTimerTask(instance, this); schedule(task, 0, period_inverval_in_ms); interval = period_inverval_in_ms; } @@ -75,4 +95,6 @@ public class RockboxTimer extends Timer } } public native void timerTask(); + private native void postCallIncoming(); + private native void postCallHungUp(); } -- cgit v1.1