diff options
author | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-10-30 15:24:19 +0700 |
---|---|---|
committer | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-10-30 16:13:09 +0700 |
commit | ea3595d67907fedd28dd988166c4e5b789866eed (patch) | |
tree | edf0cf2684ac09952e2d20d912cfad673be1f21f /src/com | |
parent | 7a108b6a8a98b51638e2edae9d028a6478a68008 (diff) | |
download | android_packages_apps_SamsungServiceMode-ea3595d67907fedd28dd988166c4e5b789866eed.tar.gz android_packages_apps_SamsungServiceMode-ea3595d67907fedd28dd988166c4e5b789866eed.tar.bz2 android_packages_apps_SamsungServiceMode-ea3595d67907fedd28dd988166c4e5b789866eed.zip |
SamsungServiceMode: Add ExecuteReceiver broadcast receiver
This allows other system applications to send commands to service
mode programmatically. This will be used for AriesParts' HSPA
setting.
Patch set 2: White spaces
Change-Id: I76632c874b872f0d3f9a1013b7dd548af4b91341
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/cyanogenmod/samsungservicemode/ExecuteReceiver.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/samsungservicemode/ExecuteReceiver.java b/src/com/cyanogenmod/samsungservicemode/ExecuteReceiver.java new file mode 100644 index 0000000..246bdc7 --- /dev/null +++ b/src/com/cyanogenmod/samsungservicemode/ExecuteReceiver.java @@ -0,0 +1,52 @@ +package com.cyanogenmod.samsungservicemode; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.util.Log; + +import com.android.internal.telephony.Phone; +import com.android.internal.telephony.PhoneFactory; + +public class ExecuteReceiver extends BroadcastReceiver { + + private static final String TAG = "ExecuteReceiver"; + + public static final String KEY_MODE_TYPE = "mode_type"; + public static final String KEY_SUB_TYPE = "sub_type"; + public static final String KEY_DATA = "data"; + + private Phone mPhone; + private Handler mHandler = new Handler(); + + @Override + public void onReceive(Context context, Intent intent) { + // Read intent data + int modeType = intent.getIntExtra(KEY_MODE_TYPE, OemCommands.OEM_SM_TYPE_TEST_MANUAL); + int subType = intent.getIntExtra(KEY_SUB_TYPE, OemCommands.OEM_SM_TYPE_SUB_ENTER); + String data = intent.getStringExtra(KEY_DATA); + + if (data == null) { + Log.e(TAG, "Intent extra 'data' must not be null."); + return; + } + + // Initialize + mPhone = PhoneFactory.getDefaultPhone(); + + // Send requests + sendRequest(OemCommands.getEnterServiceModeData(modeType, subType, OemCommands.OEM_SM_ACTION)); + + for (char chr : data.toCharArray()) { + sendRequest(OemCommands.getPressKeyData(chr, OemCommands.OEM_SM_ACTION)); + } + + sendRequest(OemCommands.getEndServiceModeData(modeType)); + } + + private void sendRequest(byte[] data) { + mPhone.invokeOemRilRequestRaw(data, mHandler.obtainMessage()); + } + +} |