summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawit Pornkitprasan <p.pawit@gmail.com>2011-10-27 22:22:15 +0700
committerPawit Pornkitprasan <p.pawit@gmail.com>2011-10-27 22:22:15 +0700
commit7a108b6a8a98b51638e2edae9d028a6478a68008 (patch)
tree96c6206dd5405b0bcea0871b7748401ae78fd78f
parent84eaf6f9151216251c63caa0e7e4427640b2946d (diff)
downloadandroid_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.tar.gz
android_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.tar.bz2
android_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.zip
SamsungServiceMode: Add input support and option menu.
Input is used for AUDIO menus. Change-Id: I70d846ab9bb23573a73c5176170f9943b813a29d
-rw-r--r--res/menu/menu.xml8
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java64
3 files changed, 74 insertions, 2 deletions
diff --git a/res/menu/menu.xml b/res/menu/menu.xml
new file mode 100644
index 0000000..62760a5
--- /dev/null
+++ b/res/menu/menu.xml
@@ -0,0 +1,8 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:id="@+id/menu_input"
+ android:icon="@android:drawable/ic_menu_edit"
+ android:title="@string/input" />
+ <item android:id="@+id/menu_quit"
+ android:icon="@android:drawable/ic_menu_close_clear_cancel"
+ android:title="@string/quit" />
+</menu> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d033037..2875b84 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="hello">Hello World, SamsungServiceModeActivity!</string>
<string name="app_name">Service Mode</string>
- <string name="send">Send</string>
+ <string name="input">Input</string>
+ <string name="quit">Quit</string>
</resources>
diff --git a/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java b/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
index 59c0139..a882796 100644
--- a/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
+++ b/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java
@@ -1,15 +1,22 @@
package com.cyanogenmod.samsungservicemode;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.EditText;
import android.widget.ListView;
import com.android.internal.telephony.Phone;
@@ -25,10 +32,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView.
private static final int ID_SERVICE_MODE_REQUEST = 1008;
private static final int ID_SERVICE_MODE_END = 1009;
+ private static final int DIALOG_INPUT = 0;
+
private static final int CHARS_PER_LINE = 34;
private static final int LINES = 11;
private ListView mListView;
+ private EditText mInputText;
private String[] mDisplay = new String[LINES];
private int mCurrentSvcMode;
@@ -139,6 +149,7 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView.
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
+ mInputText = new EditText(this);
mListView = (ListView)findViewById(R.id.displayList);
mListView.setOnItemClickListener(this);
@@ -213,6 +224,45 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView.
}
@Override
+ protected Dialog onCreateDialog(int id) {
+ switch (id) {
+ case DIALOG_INPUT:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.input)
+ .setView(mInputText)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ sendString(mInputText.getText().toString());
+ mInputText.setText("");
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, null)
+ .create();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.menu, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_input:
+ showDialog(DIALOG_INPUT);
+ break;
+ case R.id.menu_quit:
+ endServiceMode();
+ break;
+ }
+ return true;
+ }
+
+ @Override
public void onBackPressed() {
if (!mAllowBack && mDisplay[0].equals(mFirstPageHead)) {
Log.v(TAG, "Back disabled. Ending service mode.");
@@ -225,6 +275,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView.
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String str = mDisplay[position];
+
+ if (str.equals("Input ?")) {
+ // This one asks for input, show the input dialog for convenience
+ showDialog(DIALOG_INPUT);
+ return;
+ }
+
int start = str.indexOf('[');
int end = str.indexOf(']');
@@ -269,6 +326,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView.
sendRequest(data, ID_SERVICE_MODE_REQUEST);
}
+ private void sendString(String str) {
+ for (char chr : str.toCharArray()) {
+ sendChar(chr);
+ }
+ sendChar((char) 83); // End
+ }
+
private void sendRequest(byte[] data, int id) {
Message msg = mHandler.obtainMessage(id);
mPhone.invokeOemRilRequestRaw(data, msg);