/* * Copyright (C) 2014 The Android Open Source Project * * 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. */ package com.example.android.google.wearable.app; import android.app.Activity; import android.app.Notification; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v4.view.GestureDetectorCompat; import android.support.wearable.view.DelayedConfirmationView; import android.support.wearable.view.DismissOverlayView; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.widget.ScrollView; public class MainActivity extends Activity implements DelayedConfirmationView.DelayedConfirmationListener { private static final String TAG = "MainActivity"; private static final int NOTIFICATION_ID = 1; private static final int NOTIFICATION_REQUEST_CODE = 1; private static final int NUM_SECONDS = 5; private GestureDetectorCompat mGestureDetector; private DismissOverlayView mDismissOverlayView; @Override public void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.main_activity); mDismissOverlayView = (DismissOverlayView) findViewById(R.id.dismiss_overlay); mDismissOverlayView.setIntroText(R.string.intro_text); mDismissOverlayView.showIntroIfNecessary(); mGestureDetector = new GestureDetectorCompat(this, new LongPressListener()); } @Override public boolean dispatchTouchEvent(MotionEvent event) { return mGestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event); } private class LongPressListener extends GestureDetector.SimpleOnGestureListener { @Override public void onLongPress(MotionEvent event) { mDismissOverlayView.show(); } } /** * Handles the button to launch a notification. */ public void showNotification(View view) { Notification notification = new NotificationCompat.Builder(this) .setContentTitle(getString(R.string.notification_title)) .setContentText(getString(R.string.notification_title)) .setSmallIcon(R.drawable.ic_launcher) .addAction(R.drawable.ic_launcher, getText(R.string.action_launch_activity), PendingIntent.getActivity(this, NOTIFICATION_REQUEST_CODE, new Intent(this, GridExampleActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)) .build(); NotificationManagerCompat.from(this).notify(NOTIFICATION_ID, notification); finish(); } /** * Handles the button press to finish this activity and take the user back to the Home. */ public void onFinishActivity(View view) { setResult(RESULT_OK); finish(); } /** * Handles the button to start a DelayedConfirmationView timer. */ public void onStartTimer(View view) { DelayedConfirmationView delayedConfirmationView = (DelayedConfirmationView) findViewById(R.id.timer); delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000); delayedConfirmationView.setListener(this); delayedConfirmationView.start(); scroll(View.FOCUS_DOWN); } @Override public void onTimerFinished(View v) { Log.d(TAG, "onTimerFinished is called."); scroll(View.FOCUS_UP); } @Override public void onTimerSelected(View v) { Log.d(TAG, "onTimerSelected is called."); scroll(View.FOCUS_UP); } private void scroll(final int scrollDirection) { final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll); scrollView.post(new Runnable() { @Override public void run() { scrollView.fullScroll(scrollDirection); } }); } }