upload android base code part7
This commit is contained in:
parent
4e516ec6ed
commit
841ae54672
25229 changed files with 1709508 additions and 0 deletions
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.android.google.wearable.app" >
|
||||
|
||||
<uses-sdk android:minSdkVersion="20"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<uses-feature android:name="android.hardware.type.watch" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@android:style/Theme.DeviceDefault">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.google.android.clockwork.example.SKELETON"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".GridExampleActivity">
|
||||
<intent-filter>
|
||||
<action android:name="com.example.android.google.wearable.app.GRID_ACTIVITY"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
page.tags="SkeletonWearableApp"
|
||||
sample.group=Wearable
|
||||
@jd:body
|
||||
|
||||
<p>
|
||||
|
||||
This sample is a mostly empty wearable app that implements a fullscreen activity
|
||||
conforming to Android Wear best practices. Included in the sample are examples of GridViewPager,
|
||||
DelayedConfirmationView, and DismissOverlayView. Developers who require a fullscreen activity for
|
||||
their wearable app can use this sample as a starting point.
|
||||
|
||||
</p>
|
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<android.support.wearable.view.GridViewPager
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/fragment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
|
@ -0,0 +1,84 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scroll"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="#000000"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="2dp"
|
||||
android:text="@string/main_activity_title_text"
|
||||
android:textSize="36sp"
|
||||
android:textColor="#006600"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:onClick="showNotification"
|
||||
android:text="@string/show_notification" />
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:onClick="onFinishActivity"
|
||||
android:text="@string/finish_activity" />
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/start_timer_button"
|
||||
android:onClick="onStartTimer"
|
||||
android:text="@string/start_timer" />
|
||||
|
||||
<android.support.wearable.view.DelayedConfirmationView
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/timer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_launcher"
|
||||
app:circle_color="@color/blue"
|
||||
app:circle_padding="@dimen/circle_padding"
|
||||
app:circle_border_width="@dimen/circle_border_normal_width"
|
||||
app:circle_border_color="@color/white"
|
||||
app:circle_radius="@dimen/circle_radius"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<android.support.wearable.view.DismissOverlayView
|
||||
android:id="@+id/dismiss_overlay"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</FrameLayout>
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
<dimen name="circle_border_normal_width">10dp</dimen>
|
||||
<dimen name="circle_padding">5dp</dimen>
|
||||
<dimen name="circle_radius">50dp</dimen>
|
||||
</resources>
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Skeleton Wearable App</string>
|
||||
<string name="intro_text">Long press to go back home.</string>
|
||||
<string name="main_activity_title_text"> Main Activity </string>
|
||||
<string name="grid_activity_title_text"> Grid Activity </string>
|
||||
<string name="finish_activity"> Finish Activity </string>
|
||||
<string name="start_timer"> Start Timer (5 sec) </string>
|
||||
<string name="show_notification"> Show Notification </string>
|
||||
<string name="notification_title"> Skeleton App Notification </string>
|
||||
<string name="action_launch_activity">Launch Activity</string>
|
||||
</resources>
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* 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.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.Paint.Align;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.wearable.view.CardFragment;
|
||||
import android.support.wearable.view.FragmentGridPagerAdapter;
|
||||
import android.support.wearable.view.GridViewPager;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class GridExampleActivity extends Activity {
|
||||
private static final int NUM_ROWS = 10;
|
||||
private static final int NUM_COLS = 3;
|
||||
|
||||
MainAdapter mAdapter;
|
||||
GridViewPager mPager;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.grid_activity);
|
||||
mPager = (GridViewPager) findViewById(R.id.fragment_container);
|
||||
mAdapter = new MainAdapter(this, getFragmentManager());
|
||||
mPager.setAdapter(mAdapter);
|
||||
|
||||
}
|
||||
|
||||
private static class MainAdapter extends FragmentGridPagerAdapter{
|
||||
Map<Point, Drawable> mBackgrounds = new HashMap<Point, Drawable>();
|
||||
private Context mContext;
|
||||
|
||||
public MainAdapter(Context ctx, FragmentManager fm) {
|
||||
super(fm);
|
||||
mContext = ctx;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return NUM_ROWS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnCount(int rowNum) {
|
||||
return NUM_COLS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getFragment(int rowNum, int colNum) {
|
||||
return MainFragment.newInstance(rowNum, colNum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getBackgroundForPage(int row, int column) {
|
||||
Point pt = new Point(column, row);
|
||||
Drawable drawable = mBackgrounds.get(pt);
|
||||
if (drawable == null) {
|
||||
Bitmap bm = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
|
||||
Canvas c = new Canvas(bm);
|
||||
Paint p = new Paint();
|
||||
// Clear previous image.
|
||||
c.drawRect(0, 0, 200, 200, p);
|
||||
p.setAntiAlias(true);
|
||||
p.setTypeface(Typeface.DEFAULT);
|
||||
p.setTextSize(64);
|
||||
p.setColor(Color.LTGRAY);
|
||||
p.setTextAlign(Align.CENTER);
|
||||
c.drawText(column+ "-" + row, 100, 100, p);
|
||||
drawable = new BitmapDrawable(mContext.getResources(), bm);
|
||||
mBackgrounds.put(pt, drawable);
|
||||
}
|
||||
return drawable;
|
||||
}
|
||||
}
|
||||
|
||||
public static class MainFragment extends CardFragment {
|
||||
private static MainFragment newInstance(int rowNum, int colNum) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString(CardFragment.KEY_TITLE, "Row:" + rowNum);
|
||||
args.putString(CardFragment.KEY_TEXT, "Col:" + colNum);
|
||||
MainFragment f = new MainFragment();
|
||||
f.setArguments(args);
|
||||
return f;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* 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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue