19d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project/* 29d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 49d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * you may not use this file except in compliance with the License. 69d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * You may obtain a copy of the License at 79d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 89d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * 109d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * See the License for the specific language governing permissions and 149d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project * limitations under the License. 159d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project */ 169d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 179d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectpackage com.android.stk; 189d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 199d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.app.Activity; 203350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padaweimport android.app.AlertDialog; 218dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.BroadcastReceiver; 228dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.Context; 239d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.content.Intent; 248dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport android.content.IntentFilter; 259d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Bundle; 269d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Handler; 279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.os.Message; 289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.KeyEvent; 293350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padaweimport android.view.LayoutInflater; 30075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiangimport android.view.MotionEvent; 319d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.view.View; 329d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.ImageView; 339d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectimport android.widget.TextView; 34e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Savilleimport com.android.internal.telephony.cat.CatLog; 35d41f1d98d7bf42e9e867819593ad79f685604796Alex Yakavenkaimport com.android.internal.telephony.cat.TextMessage; 368dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintalaimport com.android.internal.telephony.cat.CatLog; 379d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 389d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project/** 398dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala * Activity used to display tone dialog. 4079085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville * 419d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project */ 429d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Projectpublic class ToneDialog extends Activity { 439d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project TextMessage toneMsg = null; 44e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville int mSlotId = -1; 459d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 46e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville private static final String LOG_TAG = new Object(){}.getClass().getEnclosingClass().getName(); 47e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville 489d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 499d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project protected void onCreate(Bundle icicle) { 509d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project super.onCreate(icicle); 519d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 52e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville CatLog.d(LOG_TAG, "onCreate"); 53a8e4f50aead658df817e0c0434fc5fb261701208Wink Saville initFromIntent(getIntent()); 548dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala // Register receiver 558dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala IntentFilter filter = new IntentFilter(); 568dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala filter.addAction(StkAppService.FINISH_TONE_ACTIVITY_ACTION); 578dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala registerReceiver(mFinishActivityReceiver, filter); 589d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 593350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 603350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe LayoutInflater inflater = this.getLayoutInflater(); 613350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe View dialogView = inflater.inflate(R.layout.stk_tone_dialog, null); 623350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe alertDialogBuilder.setView(dialogView); 639d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 643350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe TextView tv = (TextView) dialogView.findViewById(R.id.message); 653350188abe8b3629ec4b291e3e2aab0edce17810Sanket Padawe ImageView iv = (ImageView) dialogView.findViewById(R.id.icon); 669d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 679d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project // set text and icon 68e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville if ((null == toneMsg) || (null == toneMsg.text) || (toneMsg.text.equals(""))) { 69e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville CatLog.d(LOG_TAG, "onCreate - null tone text"); 70e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville } else { 71e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville tv.setText(toneMsg.text); 72e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville } 73e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville 749d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (toneMsg.icon == null) { 759d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project iv.setImageResource(com.android.internal.R.drawable.ic_volume); 769d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } else { 779d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project iv.setImageBitmap(toneMsg.icon); 789d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 799d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 80b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami if (toneMsg.iconSelfExplanatory && toneMsg.icon != null) { 81b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami tv.setVisibility(View.GONE); 82b97605d5a7b965e00ab4477232546f7ac3520f92Teruaki Minami } 839d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 849d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 859d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 869d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project protected void onDestroy() { 87e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville CatLog.d(LOG_TAG, "onDestroy"); 888dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala // Unregister receiver 898dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala unregisterReceiver(mFinishActivityReceiver); 908dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala super.onDestroy(); 919d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 9279085fcc5b4e54cc374e8720644ce4c1dc0004beWink Saville 939d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project @Override 949d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project public boolean onKeyDown(int keyCode, KeyEvent event) { 959d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project switch (keyCode) { 969d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project case KeyEvent.KEYCODE_BACK: 978dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala sendStopTone(); 989d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 999d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project break; 1009d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1019d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project return false; 1029d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1039d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 104075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang @Override 105075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang public boolean onTouchEvent(MotionEvent event) { 106075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang switch (event.getAction()) { 107075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang case MotionEvent.ACTION_DOWN: 1088dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala sendStopTone(); 109075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang finish(); 110075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang return true; 111075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang } 112075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang return super.onTouchEvent(event); 113075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang } 114075340e9d224c3e6aa57cc50ccc5adfeb1cdfe45Li Qiang 1158dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala private BroadcastReceiver mFinishActivityReceiver = new BroadcastReceiver() { 1168dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala @Override 1178dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala public void onReceive(Context context, Intent intent) { 1188dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala // Intent received from StkAppService to finish ToneDialog activity, 1198dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala // after finishing off playing the tone. 1208dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala if (intent.getAction().equals(StkAppService.FINISH_TONE_ACTIVITY_ACTION)) { 1218dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala CatLog.d(this, "Finishing Tone dialog activity"); 1228dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala finish(); 1238dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala } 1248dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala } 1258dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala }; 1268dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala 1279d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project private void initFromIntent(Intent intent) { 1289d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project if (intent == null) { 1299d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project finish(); 1309d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1319d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project toneMsg = intent.getParcelableExtra("TEXT"); 132e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville mSlotId = intent.getIntExtra(StkAppService.SLOT_ID, -1); 1339d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1349d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project 1358dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala // Send stop playing tone to StkAppService, when user presses back key. 1368dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala private void sendStopTone() { 1379d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project Bundle args = new Bundle(); 1388dbe385fcede884b7871f7c5397873fe690b268bSrikanth Chintala args.putInt(StkAppService.OPCODE, StkAppService.OP_STOP_TONE_USER); 139e68857da85f6fb0964da9d58a7cbfcc0348065c6Wink Saville args.putInt(StkAppService.SLOT_ID, mSlotId); 1409d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project startService(new Intent(this, StkAppService.class).putExtras(args)); 1419d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project } 1429d9730aecb72e830ef12d66ce6e084d8ae0928f2The Android Open Source Project} 143