18932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato/* 28932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * Copyright (C) 2008 The Android Open Source Project 38932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * 48932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 58932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * you may not use this file except in compliance with the License. 68932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * You may obtain a copy of the License at 78932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * 88932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 98932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * 108932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * Unless required by applicable law or agreed to in writing, software 118932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 128932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * See the License for the specific language governing permissions and 148932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato * limitations under the License. 158932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato */ 168932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 178932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratopackage com.android.fixvibratesetting; 188932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 198932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.app.Activity; 208932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.app.Notification; 218932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.app.NotificationManager; 228932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.app.PendingIntent; 238932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.content.Intent; 248932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.media.AudioManager; 258932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.util.Log; 268932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.view.View; 278932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.widget.TextView; 288932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratoimport android.os.Bundle; 298932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 308932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onoratopublic class FixVibrateSetting extends Activity implements View.OnClickListener 318932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato{ 328932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato AudioManager mAudioManager; 338932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato NotificationManager mNotificationManager; 348932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato TextView mCurrentSetting; 358932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato View mFix; 368932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato View mUnfix; 378932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato View mTest; 388932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 398932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato @Override 408932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato public void onCreate(Bundle icicle) { 418932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato super.onCreate(icicle); 428932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 438932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato setContentView(R.layout.fix_vibrate); 448932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 458932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); 468932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 478932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 488932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mCurrentSetting = (TextView)findViewById(R.id.current_setting); 498932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 508932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mFix = findViewById(R.id.fix); 518932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mFix.setOnClickListener(this); 528932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 538932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mUnfix = findViewById(R.id.unfix); 548932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mUnfix.setOnClickListener(this); 558932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 568932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mTest = findViewById(R.id.test); 578932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mTest.setOnClickListener(this); 588932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 598932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 608932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato @Override 618932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato public void onResume() { 628932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato super.onResume(); 638932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 648932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato update(); 658932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 668932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 678932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato private String getSettingValue(int vibrateType) { 688932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato int setting = mAudioManager.getVibrateSetting(vibrateType); 698932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato switch (setting) { 708932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato case AudioManager.VIBRATE_SETTING_OFF: 718932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato return "off"; 728932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato case AudioManager.VIBRATE_SETTING_ON: 738932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato return "on"; 748932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato case AudioManager.VIBRATE_SETTING_ONLY_SILENT: 758932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato return "silent-only"; 768932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato default: 778932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato return "unknown"; 788932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 798932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 808932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 818932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato public void onClick(View v) { 828932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato if (v == mFix) { 838932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato fix(); 848932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato update(); 858932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } else if (v == mUnfix) { 868932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato unfix(); 878932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato update(); 888932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } else if (v == mTest) { 898932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato test(); 908932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato update(); 918932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 928932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 938932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 948932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato private void update() { 958932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato String ringer = getSettingValue(AudioManager.VIBRATE_TYPE_RINGER); 968932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato String notification = getSettingValue(AudioManager.VIBRATE_TYPE_NOTIFICATION); 978932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato String text = getString(R.string.current_setting, ringer, notification); 988932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mCurrentSetting.setText(text); 998932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 1008932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 1018932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato private void fix() { 1028932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, 1038932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato AudioManager.VIBRATE_SETTING_ON); 1048932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 1058932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 1068932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato private void unfix() { 1078932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, 1088932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato AudioManager.VIBRATE_SETTING_OFF); 1098932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 1108932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 1118932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato private void test() { 1128932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato Notification n = new Notification(R.drawable.stat_sys_warning, "Test notification", 1138932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato System.currentTimeMillis()); 1148932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato Intent intent = new Intent(this, FixVibrateSetting.class); 1158932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0); 1168932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato n.setLatestEventInfo(this, "Test notification", "Test notification", pending); 1178932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 1188932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato n.vibrate = new long[] { 0, 700, 500, 1000 }; 1198932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato n.flags |= Notification.FLAG_AUTO_CANCEL; 1208932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato mNotificationManager.notify(1, n); 1218932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato } 1228932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato} 1238932020f542ae6dd4750fa823bbf2d2bcf504267Joe Onorato 124