Home | History | Annotate | Download | only in app
      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