diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:06:02 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:06:02 -0800 |
commit | c46d8a06f810a3b5b570e43e7e0ed8b36efd23e5 (patch) | |
tree | 9fa47e0b9cb074cb447a1b4e3042ed94348a7c7b /src/com/android/stk/ToneDialog.java | |
parent | e405ce157d5bfb44efa33a314ae08d543bc9d39e (diff) | |
download | Stk-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.java | 133 |
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)); + } +} |