1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.example.android.google.wearable.app; 18 19 import android.app.Activity; 20 import android.app.Notification; 21 import android.app.PendingIntent; 22 import android.content.Intent; 23 import android.os.Bundle; 24 import android.support.v4.app.NotificationCompat; 25 import android.support.v4.app.NotificationManagerCompat; 26 import android.support.v4.view.GestureDetectorCompat; 27 import android.support.wearable.view.DelayedConfirmationView; 28 import android.support.wearable.view.DismissOverlayView; 29 import android.util.Log; 30 import android.view.GestureDetector; 31 import android.view.MotionEvent; 32 import android.view.View; 33 import android.widget.ScrollView; 34 35 public class MainActivity extends Activity 36 implements DelayedConfirmationView.DelayedConfirmationListener { 37 private static final String TAG = "MainActivity"; 38 39 private static final int NOTIFICATION_ID = 1; 40 private static final int NOTIFICATION_REQUEST_CODE = 1; 41 private static final int NUM_SECONDS = 5; 42 43 private GestureDetectorCompat mGestureDetector; 44 private DismissOverlayView mDismissOverlayView; 45 46 @Override 47 public void onCreate(Bundle b) { 48 super.onCreate(b); 49 setContentView(R.layout.main_activity); 50 51 mDismissOverlayView = (DismissOverlayView) findViewById(R.id.dismiss_overlay); 52 mDismissOverlayView.setIntroText(R.string.intro_text); 53 mDismissOverlayView.showIntroIfNecessary(); 54 mGestureDetector = new GestureDetectorCompat(this, new LongPressListener()); 55 } 56 57 @Override 58 public boolean dispatchTouchEvent(MotionEvent event) { 59 return mGestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event); 60 } 61 62 private class LongPressListener extends GestureDetector.SimpleOnGestureListener { 63 @Override 64 public void onLongPress(MotionEvent event) { 65 mDismissOverlayView.show(); 66 } 67 } 68 69 /** 70 * Handles the button to launch a notification. 71 */ 72 public void showNotification(View view) { 73 Notification notification = new NotificationCompat.Builder(this) 74 .setContentTitle(getString(R.string.notification_title)) 75 .setContentText(getString(R.string.notification_title)) 76 .setSmallIcon(R.drawable.ic_launcher) 77 .addAction(R.drawable.ic_launcher, 78 getText(R.string.action_launch_activity), 79 PendingIntent.getActivity(this, NOTIFICATION_REQUEST_CODE, 80 new Intent(this, GridExampleActivity.class), 81 PendingIntent.FLAG_UPDATE_CURRENT)) 82 .build(); 83 NotificationManagerCompat.from(this).notify(NOTIFICATION_ID, notification); 84 finish(); 85 } 86 87 88 /** 89 * Handles the button press to finish this activity and take the user back to the Home. 90 */ 91 public void onFinishActivity(View view) { 92 setResult(RESULT_OK); 93 finish(); 94 } 95 96 /** 97 * Handles the button to start a DelayedConfirmationView timer. 98 */ 99 public void onStartTimer(View view) { 100 DelayedConfirmationView delayedConfirmationView = (DelayedConfirmationView) 101 findViewById(R.id.timer); 102 delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000); 103 delayedConfirmationView.setListener(this); 104 delayedConfirmationView.start(); 105 scroll(View.FOCUS_DOWN); 106 } 107 108 @Override 109 public void onTimerFinished(View v) { 110 Log.d(TAG, "onTimerFinished is called."); 111 scroll(View.FOCUS_UP); 112 } 113 114 @Override 115 public void onTimerSelected(View v) { 116 Log.d(TAG, "onTimerSelected is called."); 117 scroll(View.FOCUS_UP); 118 } 119 120 private void scroll(final int scrollDirection) { 121 final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll); 122 scrollView.post(new Runnable() { 123 @Override 124 public void run() { 125 scrollView.fullScroll(scrollDirection); 126 } 127 }); 128 } 129 } 130