You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
11 KiB
178 lines
11 KiB
<html>
|
|
<head>
|
|
<title>AlarmAlertActivity.java</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<style type="text/css">
|
|
.s0 { color: #8c8c8c; font-style: italic;}
|
|
.s1 { color: #080808;}
|
|
.s2 { color: #0033b3;}
|
|
.s3 { color: #1750eb;}
|
|
</style>
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#c0c0c0" >
|
|
<tr><td><center>
|
|
<font face="Arial, Helvetica" color="#000000">
|
|
AlarmAlertActivity.java</font>
|
|
</center></td></tr></table>
|
|
<pre><span class="s0">/*
|
|
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
|
|
*
|
|
* 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.
|
|
*/</span>
|
|
|
|
<span class="s2">package </span><span class="s1">net.micode.notes.ui;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">android.app.Activity;</span>
|
|
<span class="s2">import </span><span class="s1">android.app.AlertDialog;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.Context;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.DialogInterface;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.DialogInterface.OnClickListener;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.DialogInterface.OnDismissListener;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.Intent;</span>
|
|
<span class="s2">import </span><span class="s1">android.media.AudioManager;</span>
|
|
<span class="s2">import </span><span class="s1">android.media.MediaPlayer;</span>
|
|
<span class="s2">import </span><span class="s1">android.media.RingtoneManager;</span>
|
|
<span class="s2">import </span><span class="s1">android.net.Uri;</span>
|
|
<span class="s2">import </span><span class="s1">android.os.Bundle;</span>
|
|
<span class="s2">import </span><span class="s1">android.os.PowerManager;</span>
|
|
<span class="s2">import </span><span class="s1">android.provider.Settings;</span>
|
|
<span class="s2">import </span><span class="s1">android.view.Window;</span>
|
|
<span class="s2">import </span><span class="s1">android.view.WindowManager;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.R;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.tool.DataUtils;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">java.io.IOException;</span>
|
|
|
|
|
|
<span class="s2">public class </span><span class="s1">AlarmAlertActivity </span><span class="s2">extends </span><span class="s1">Activity </span><span class="s2">implements </span><span class="s1">OnClickListener, OnDismissListener {</span>
|
|
<span class="s2">private long </span><span class="s1">mNoteId;</span>
|
|
<span class="s2">private </span><span class="s1">String mSnippet;</span>
|
|
<span class="s2">private static final int </span><span class="s1">SNIPPET_PREW_MAX_LEN = </span><span class="s3">60</span><span class="s1">;</span>
|
|
<span class="s1">MediaPlayer mPlayer;</span>
|
|
|
|
<span class="s1">@Override</span>
|
|
<span class="s2">protected void </span><span class="s1">onCreate(Bundle savedInstanceState) {</span>
|
|
<span class="s2">super</span><span class="s1">.onCreate(savedInstanceState);</span>
|
|
<span class="s1">requestWindowFeature(Window.FEATURE_NO_TITLE);</span>
|
|
|
|
<span class="s2">final </span><span class="s1">Window win = getWindow();</span>
|
|
<span class="s1">win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(!isScreenOn()) {</span>
|
|
<span class="s1">win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON</span>
|
|
<span class="s1">| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON</span>
|
|
<span class="s1">| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON</span>
|
|
<span class="s1">| WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">Intent intent = getIntent();</span>
|
|
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">mNoteId = Long.valueOf(intent.getData().getPathSegments().get(</span><span class="s3">1</span><span class="s1">));</span>
|
|
<span class="s1">mSnippet = DataUtils.getSnippetById(</span><span class="s2">this</span><span class="s1">.getContentResolver(), mNoteId);</span>
|
|
<span class="s1">mSnippet = mSnippet.length() > SNIPPET_PREW_MAX_LEN ? mSnippet.substring(</span><span class="s3">0</span><span class="s1">,</span>
|
|
<span class="s1">SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info)</span>
|
|
<span class="s1">: mSnippet;</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IllegalArgumentException e) {</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s2">return</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">mPlayer = </span><span class="s2">new </span><span class="s1">MediaPlayer();</span>
|
|
<span class="s2">if </span><span class="s1">(DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) {</span>
|
|
<span class="s1">showActionDialog();</span>
|
|
<span class="s1">playAlarmSound();</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s1">finish();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">private boolean </span><span class="s1">isScreenOn() {</span>
|
|
<span class="s1">PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);</span>
|
|
<span class="s2">return </span><span class="s1">pm.isScreenOn();</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">private void </span><span class="s1">playAlarmSound() {</span>
|
|
<span class="s1">Uri url = RingtoneManager.getActualDefaultRingtoneUri(</span><span class="s2">this</span><span class="s1">, RingtoneManager.TYPE_ALARM);</span>
|
|
|
|
<span class="s2">int </span><span class="s1">silentModeStreams = Settings.System.getInt(getContentResolver(),</span>
|
|
<span class="s1">Settings.System.MODE_RINGER_STREAMS_AFFECTED, </span><span class="s3">0</span><span class="s1">);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">((silentModeStreams & (</span><span class="s3">1 </span><span class="s1"><< AudioManager.STREAM_ALARM)) != </span><span class="s3">0</span><span class="s1">) {</span>
|
|
<span class="s1">mPlayer.setAudioStreamType(silentModeStreams);</span>
|
|
<span class="s1">} </span><span class="s2">else </span><span class="s1">{</span>
|
|
<span class="s1">mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">mPlayer.setDataSource(</span><span class="s2">this</span><span class="s1">, url);</span>
|
|
<span class="s1">mPlayer.prepare();</span>
|
|
<span class="s1">mPlayer.setLooping(</span><span class="s2">true</span><span class="s1">);</span>
|
|
<span class="s1">mPlayer.start();</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IllegalArgumentException e) {</span>
|
|
<span class="s0">// TODO Auto-generated catch block</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(SecurityException e) {</span>
|
|
<span class="s0">// TODO Auto-generated catch block</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IllegalStateException e) {</span>
|
|
<span class="s0">// TODO Auto-generated catch block</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IOException e) {</span>
|
|
<span class="s0">// TODO Auto-generated catch block</span>
|
|
<span class="s1">e.printStackTrace();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">private void </span><span class="s1">showActionDialog() {</span>
|
|
<span class="s1">AlertDialog.Builder dialog = </span><span class="s2">new </span><span class="s1">AlertDialog.Builder(</span><span class="s2">this</span><span class="s1">);</span>
|
|
<span class="s1">dialog.setTitle(R.string.app_name);</span>
|
|
<span class="s1">dialog.setMessage(mSnippet);</span>
|
|
<span class="s1">dialog.setPositiveButton(R.string.notealert_ok, </span><span class="s2">this</span><span class="s1">);</span>
|
|
<span class="s2">if </span><span class="s1">(isScreenOn()) {</span>
|
|
<span class="s1">dialog.setNegativeButton(R.string.notealert_enter, </span><span class="s2">this</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">dialog.show().setOnDismissListener(</span><span class="s2">this</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">onClick(DialogInterface dialog, </span><span class="s2">int </span><span class="s1">which) {</span>
|
|
<span class="s2">switch </span><span class="s1">(which) {</span>
|
|
<span class="s2">case </span><span class="s1">DialogInterface.BUTTON_NEGATIVE:</span>
|
|
<span class="s1">Intent intent = </span><span class="s2">new </span><span class="s1">Intent(</span><span class="s2">this</span><span class="s1">, NoteEditActivity.</span><span class="s2">class</span><span class="s1">);</span>
|
|
<span class="s1">intent.setAction(Intent.ACTION_VIEW);</span>
|
|
<span class="s1">intent.putExtra(Intent.EXTRA_UID, mNoteId);</span>
|
|
<span class="s1">startActivity(intent);</span>
|
|
<span class="s2">break</span><span class="s1">;</span>
|
|
<span class="s2">default</span><span class="s1">:</span>
|
|
<span class="s2">break</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public void </span><span class="s1">onDismiss(DialogInterface dialog) {</span>
|
|
<span class="s1">stopAlarmSound();</span>
|
|
<span class="s1">finish();</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">private void </span><span class="s1">stopAlarmSound() {</span>
|
|
<span class="s2">if </span><span class="s1">(mPlayer != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">mPlayer.stop();</span>
|
|
<span class="s1">mPlayer.release();</span>
|
|
<span class="s1">mPlayer = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
</pre>
|
|
</body>
|
|
</html> |