summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCedric Ho <cedricho@google.com>2015-05-27 09:51:19 -0700
committerCedric Ho <cedricho@google.com>2015-05-27 09:51:19 -0700
commit8fedcdad3691e613ed192f4beea18926056d251d (patch)
treeba5da0f9645c5423fbc0f326c3bdd4cb119b1d02
parent16224288791dd3f122931504e624637fdcc70903 (diff)
downloadframeworks_base-8fedcdad3691e613ed192f4beea18926056d251d.zip
frameworks_base-8fedcdad3691e613ed192f4beea18926056d251d.tar.gz
frameworks_base-8fedcdad3691e613ed192f4beea18926056d251d.tar.bz2
Add getCallingUid() to RecognitionService.Callback.
Change-Id: I596471625eee24ec93d08650c33461d35ad0aa07
-rw-r--r--api/current.txt1
-rw-r--r--api/system-current.txt1
-rw-r--r--core/java/android/speech/RecognitionService.java26
3 files changed, 22 insertions, 6 deletions
diff --git a/api/current.txt b/api/current.txt
index 41acac5..e799685 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -29028,6 +29028,7 @@ package android.speech {
method public void bufferReceived(byte[]) throws android.os.RemoteException;
method public void endOfSpeech() throws android.os.RemoteException;
method public void error(int) throws android.os.RemoteException;
+ method public int getCallingUid();
method public void partialResults(android.os.Bundle) throws android.os.RemoteException;
method public void readyForSpeech(android.os.Bundle) throws android.os.RemoteException;
method public void results(android.os.Bundle) throws android.os.RemoteException;
diff --git a/api/system-current.txt b/api/system-current.txt
index 0f6bd2a..bf22e9c 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -31154,6 +31154,7 @@ package android.speech {
method public void bufferReceived(byte[]) throws android.os.RemoteException;
method public void endOfSpeech() throws android.os.RemoteException;
method public void error(int) throws android.os.RemoteException;
+ method public int getCallingUid();
method public void partialResults(android.os.Bundle) throws android.os.RemoteException;
method public void readyForSpeech(android.os.Bundle) throws android.os.RemoteException;
method public void results(android.os.Bundle) throws android.os.RemoteException;
diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java
index dcdbba7..3e74d22 100644
--- a/core/java/android/speech/RecognitionService.java
+++ b/core/java/android/speech/RecognitionService.java
@@ -21,6 +21,7 @@ import android.annotation.SdkConstant.SdkConstantType;
import android.app.Service;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -78,7 +79,7 @@ public abstract class RecognitionService extends Service {
switch (msg.what) {
case MSG_START_LISTENING:
StartListeningArgs args = (StartListeningArgs) msg.obj;
- dispatchStartListening(args.mIntent, args.mListener);
+ dispatchStartListening(args.mIntent, args.mListener, args.mCallingUid);
break;
case MSG_STOP_LISTENING:
dispatchStopListening((IRecognitionListener) msg.obj);
@@ -93,7 +94,8 @@ public abstract class RecognitionService extends Service {
}
};
- private void dispatchStartListening(Intent intent, final IRecognitionListener listener) {
+ private void dispatchStartListening(Intent intent, final IRecognitionListener listener,
+ int callingUid) {
if (mCurrentCallback == null) {
if (DBG) Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder());
try {
@@ -107,7 +109,7 @@ public abstract class RecognitionService extends Service {
Log.e(TAG, "dead listener on startListening");
return;
}
- mCurrentCallback = new Callback(listener);
+ mCurrentCallback = new Callback(listener, callingUid);
RecognitionService.this.onStartListening(intent, mCurrentCallback);
} else {
try {
@@ -155,10 +157,12 @@ public abstract class RecognitionService extends Service {
public final Intent mIntent;
public final IRecognitionListener mListener;
+ public final int mCallingUid;
- public StartListeningArgs(Intent intent, IRecognitionListener listener) {
+ public StartListeningArgs(Intent intent, IRecognitionListener listener, int callingUid) {
this.mIntent = intent;
this.mListener = listener;
+ this.mCallingUid = callingUid;
}
}
@@ -227,9 +231,11 @@ public abstract class RecognitionService extends Service {
*/
public class Callback {
private final IRecognitionListener mListener;
+ private final int mCallingUid;
- private Callback(IRecognitionListener listener) {
+ private Callback(IRecognitionListener listener, int callingUid) {
mListener = listener;
+ mCallingUid = callingUid;
}
/**
@@ -314,6 +320,14 @@ public abstract class RecognitionService extends Service {
public void rmsChanged(float rmsdB) throws RemoteException {
mListener.onRmsChanged(rmsdB);
}
+
+ /**
+ * Return the Linux uid assigned to the process that sent you the current transaction that
+ * is being processed. This is obtained from {@link Binder#getCallingUid()}.
+ */
+ public int getCallingUid() {
+ return mCallingUid;
+ }
}
/** Binder of the recognition service */
@@ -331,7 +345,7 @@ public abstract class RecognitionService extends Service {
if (service != null && service.checkPermissions(listener)) {
service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_START_LISTENING, service.new StartListeningArgs(
- recognizerIntent, listener)));
+ recognizerIntent, listener, Binder.getCallingUid())));
}
}