summaryrefslogtreecommitdiff
path: root/src/com/android/stk/ToneDialog.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:06:02 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:06:02 -0800
commitc46d8a06f810a3b5b570e43e7e0ed8b36efd23e5 (patch)
tree9fa47e0b9cb074cb447a1b4e3042ed94348a7c7b /src/com/android/stk/ToneDialog.java
parente405ce157d5bfb44efa33a314ae08d543bc9d39e (diff)
downloadStk-c46d8a06f810a3b5b570e43e7e0ed8b36efd23e5.tar.gz
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'src/com/android/stk/ToneDialog.java')
-rw-r--r--src/com/android/stk/ToneDialog.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/com/android/stk/ToneDialog.java b/src/com/android/stk/ToneDialog.java
new file mode 100644
index 0000000..9cf4295
--- /dev/null
+++ b/src/com/android/stk/ToneDialog.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.stk;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Vibrator;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.telephony.gsm.stk.TextMessage;
+import com.android.internal.telephony.gsm.stk.ToneSettings;
+
+/**
+ * Activity used for PLAY TONE command.
+ *
+ */
+public class ToneDialog extends Activity {
+ TextMessage toneMsg = null;
+ ToneSettings settings = null;
+ TonePlayer player = null;
+
+ /**
+ * Handler used to stop tones from playing when the duration ends.
+ */
+ Handler mToneStopper = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_ID_STOP_TONE:
+ sendResponse(StkAppService.RES_ID_DONE);
+ finish();
+ break;
+ }
+ }
+ };
+
+ Vibrator mVibrator = new Vibrator();
+
+ // Message id to signal tone duration timeout.
+ private static final int MSG_ID_STOP_TONE = 0xda;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ initFromIntent(getIntent());
+
+ // remove window title
+ View title = findViewById(com.android.internal.R.id.title);
+ title.setVisibility(View.GONE);
+ // set customized content view
+ setContentView(R.layout.stk_tone_dialog);
+
+ TextView tv = (TextView) findViewById(R.id.message);
+ ImageView iv = (ImageView) findViewById(R.id.icon);
+
+ // set text and icon
+ tv.setText(toneMsg.text);
+ if (toneMsg.icon == null) {
+ iv.setImageResource(com.android.internal.R.drawable.ic_volume);
+ } else {
+ iv.setImageBitmap(toneMsg.icon);
+ }
+
+ // Start playing tone and vibration
+ player = new TonePlayer();
+ player.play(settings.tone);
+ int timeout = StkApp.calculateDurationInMilis(settings.duration);
+ if (timeout == 0) {
+ timeout = StkApp.TONE_DFEAULT_TIMEOUT;
+ }
+ mToneStopper.sendEmptyMessageDelayed(MSG_ID_STOP_TONE, timeout);
+ if (settings.vibrate) {
+ mVibrator.vibrate(timeout);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ mToneStopper.removeMessages(MSG_ID_STOP_TONE);
+ player.stop();
+ player.release();
+ mVibrator.cancel();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_BACK:
+ sendResponse(StkAppService.RES_ID_END_SESSION);
+ finish();
+ break;
+ }
+ return false;
+ }
+
+ private void initFromIntent(Intent intent) {
+ if (intent == null) {
+ finish();
+ }
+ toneMsg = intent.getParcelableExtra("TEXT");
+ settings = intent.getParcelableExtra("TONE");
+ }
+
+ private void sendResponse(int resId) {
+ Bundle args = new Bundle();
+ args.putInt(StkAppService.OPCODE, StkAppService.OP_RESPONSE);
+ args.putInt(StkAppService.RES_ID, resId);
+ startService(new Intent(this, StkAppService.class).putExtras(args));
+ }
+}