diff --git a/samples/AndroidBeamDemo/Android.bp b/samples/AndroidBeamDemo/Android.bp
deleted file mode 100644
index fdc2748b0..000000000
--- a/samples/AndroidBeamDemo/Android.bp
+++ /dev/null
@@ -1,13 +0,0 @@
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-android_test {
- name: "AndroidBeamDemo",
- // Only compile source java files in this apk.
- srcs: ["src/**/*.java"],
- sdk_version: "current",
- dex_preopt: {
- enabled: false,
- },
-}
diff --git a/samples/AndroidBeamDemo/AndroidManifest.xml b/samples/AndroidBeamDemo/AndroidManifest.xml
deleted file mode 100644
index f4c06d936..000000000
--- a/samples/AndroidBeamDemo/AndroidManifest.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
Android Beam Demo shows how to use the Android Beam feature introduced in API level 14. This -application beams a simple message from one device to another when they are in close enough proximity. This -application must be installed on two devices that have NFC capabilities, running Android 4.0 or later.
diff --git a/samples/AndroidBeamDemo/res/drawable-hdpi/ic_launcher.png b/samples/AndroidBeamDemo/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index c96fa9e05..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png deleted file mode 100644 index 5321f8285..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-hdpi/ic_menu_preferences.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-ldpi/ic_launcher.png b/samples/AndroidBeamDemo/res/drawable-ldpi/ic_launcher.png deleted file mode 100644 index ab4d45e78..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-ldpi/ic_launcher.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-mdpi/ic_launcher.png b/samples/AndroidBeamDemo/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 207968467..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png deleted file mode 100644 index ccc50e66e..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-mdpi/ic_menu_preferences.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_launcher.png b/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index ab62d1789..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png b/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png deleted file mode 100644 index 02cfbad0b..000000000 Binary files a/samples/AndroidBeamDemo/res/drawable-xhdpi/ic_menu_preferences.png and /dev/null differ diff --git a/samples/AndroidBeamDemo/res/layout/main.xml b/samples/AndroidBeamDemo/res/layout/main.xml deleted file mode 100644 index eacb68e9f..000000000 --- a/samples/AndroidBeamDemo/res/layout/main.xml +++ /dev/null @@ -1,27 +0,0 @@ - - -- - This sample demonstrates how to transfer large files via Android Beam. After the initial - handshake over NFC, file transfer will take place over a secondary high-speed - communication channel such as Bluetooth or WiFi Direct. - - \n\nThis feature requires Android 4.1 (Jelly Bean) or above. Unlike traditional Beam, - your application will not receive an Intent on the receiving device. Instead, the system - will save the file to disk and display a notification that the user can select to open - the file using a standard ACTION_VIEW Intent. - -
diff --git a/samples/browseable/BeamLargeFiles/res/drawable-hdpi/ic_launcher.png b/samples/browseable/BeamLargeFiles/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index b1efaf4b2..000000000 Binary files a/samples/browseable/BeamLargeFiles/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/samples/browseable/BeamLargeFiles/res/drawable-hdpi/tile.9.png b/samples/browseable/BeamLargeFiles/res/drawable-hdpi/tile.9.png deleted file mode 100644 index 135862883..000000000 Binary files a/samples/browseable/BeamLargeFiles/res/drawable-hdpi/tile.9.png and /dev/null differ diff --git a/samples/browseable/BeamLargeFiles/res/drawable-mdpi/ic_launcher.png b/samples/browseable/BeamLargeFiles/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index f5f9244f2..000000000 Binary files a/samples/browseable/BeamLargeFiles/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/samples/browseable/BeamLargeFiles/res/drawable-xhdpi/ic_launcher.png b/samples/browseable/BeamLargeFiles/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 5d07b3f06..000000000 Binary files a/samples/browseable/BeamLargeFiles/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/samples/browseable/BeamLargeFiles/res/drawable-xxhdpi/ic_launcher.png b/samples/browseable/BeamLargeFiles/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index 6ef21e1f4..000000000 Binary files a/samples/browseable/BeamLargeFiles/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/samples/browseable/BeamLargeFiles/res/layout-sw600dp-land/activity_main.xml b/samples/browseable/BeamLargeFiles/res/layout-sw600dp-land/activity_main.xml deleted file mode 100644 index 8fed5f746..000000000 --- a/samples/browseable/BeamLargeFiles/res/layout-sw600dp-land/activity_main.xml +++ /dev/null @@ -1,42 +0,0 @@ - -While any type of data can be placed into a normal NDEF messages, NFC is not considered - * "high-speed" communication channel. Large images can easily take > 30 seconds to transfer. - * Because NFC requires devices to be in extremely close proximity, this is not ideal. - * - *
Instead, Android 4.2+ devices can use NFC to perform an initial handshake, before handing - * off to a faster communication channel, such as Bluetooth, for file transfer. - * - *
The tradeoff is that this application will not be invoked on the receiving device. Instead, - * the transfer will be handled by the OS. The user will be shown a notification when the transfer - * is complete. Selecting the notification will open the file in the default viewer for its MIME- - * type. (If it's important that your application be used to open the file, you'll need to register - * an intent-filter to watch for the appropriate MIME-type.) - */ -public class BeamLargeFilesFragment extends Fragment implements NfcAdapter.CreateBeamUrisCallback { - - private static final String TAG = "BeamLargeFilesFragment"; - /** Filename that is to be sent for this activity. Relative to /assets. */ - private static final String FILENAME = "stargazer_droid.jpg"; - /** Content provider URI. */ - private static final String CONTENT_BASE_URI = - "content://com.example.android.beamlargefiles.files/"; - - /** - * Standard lifecycle event. Registers a callback for large-file transfer, by calling - * NfcAdapter.setBeamPushUrisCallback(). - * - * Note: Like sending NDEF messages over standard Android Beam, there is also a non-callback - * API available. See: NfcAdapter.setBeamPushUris(). - * - * @param savedInstanceState Saved instance state. - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - Activity a = getActivity(); - - // Setup Beam to transfer a large file. Note the call to setBeamPushUrisCallback(). - // BEGIN_INCLUDE(setBeamPushUrisCallback) - NfcAdapter nfc = NfcAdapter.getDefaultAdapter(a); - if (nfc != null) { - Log.w(TAG, "NFC available. Setting Beam Push URI callback"); - nfc.setBeamPushUrisCallback(this, a); - } else { - Log.w(TAG, "NFC is not available"); - } - // END_INCLUDE(setBeamPushUrisCallback) - } - - /** - * Callback for Beam events (large file version). The return value here should be an array of - * content:// or file:// URIs to send. - * - * Note that the system must have read access to whatever URIs are provided here. - * - * @param nfcEvent NFC event which triggered callback - * @return URIs to be sent to remote device - */ - // BEGIN_INCLUDE(createBeamUris) - @Override - public Uri[] createBeamUris(NfcEvent nfcEvent) { - Log.i(TAG, "Beam event in progress; createBeamUris() called."); - // Images are served using a content:// URI. See AssetProvider for implementation. - Uri photoUri = Uri.parse(CONTENT_BASE_URI + FILENAME); - Log.i(TAG, "Sending URI: " + photoUri); - return new Uri[] {photoUri}; - } - // END_INCLUDE(createBeamUris) -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.beamlargefiles/MainActivity.java b/samples/browseable/BeamLargeFiles/src/com.example.android.beamlargefiles/MainActivity.java deleted file mode 100644 index 814367833..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.beamlargefiles/MainActivity.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright 2013 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.beamlargefiles; - -import android.graphics.Color; -import android.os.Bundle; -import android.support.v4.app.FragmentTransaction; -import android.text.Html; -import android.widget.TextView; -import android.view.Menu; - -import com.example.android.common.activities.SampleActivityBase; -import com.example.android.common.logger.Log; -import com.example.android.common.logger.LogFragment; -import com.example.android.common.logger.LogWrapper; -import com.example.android.common.logger.MessageOnlyLogFilter; - -/** - * A simple launcher activity containing a summary sample description - * and a few action bar buttons. - */ -public class MainActivity extends SampleActivityBase { - - public static final String TAG = "MainActivity"; - - public static final String FRAGTAG = "BeamLargeFilesFragment"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - TextView sampleOutput = (TextView) findViewById(R.id.sample_output); - sampleOutput.setText(Html.fromHtml(getString(R.string.intro_message))); - - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - BeamLargeFilesFragment fragment = new BeamLargeFilesFragment(); - transaction.add(fragment, FRAGTAG); - transaction.commit(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - /** Create a chain of targets that will receive log data */ - @Override - public void initializeLogging() { - // Wraps Android's native log framework. - LogWrapper logWrapper = new LogWrapper(); - // Using Log, front-end to the logging chain, emulates android.util.log method signatures. - Log.setLogNode(logWrapper); - - // Filter strips out everything except the message text. - MessageOnlyLogFilter msgFilter = new MessageOnlyLogFilter(); - logWrapper.setNext(msgFilter); - - // On screen logging via a fragment with a TextView. - LogFragment logFragment = (LogFragment) getSupportFragmentManager() - .findFragmentById(R.id.log_fragment); - msgFilter.setNext(logFragment.getLogView()); - logFragment.getLogView().setTextAppearance(this, R.style.Log); - logFragment.getLogView().setBackgroundColor(Color.WHITE); - - Log.i(TAG, "Ready"); - } -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/activities/SampleActivityBase.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/activities/SampleActivityBase.java deleted file mode 100644 index 3228927b7..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/activities/SampleActivityBase.java +++ /dev/null @@ -1,52 +0,0 @@ -/* -* Copyright 2013 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.common.activities; - -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; - -import com.example.android.common.logger.Log; -import com.example.android.common.logger.LogWrapper; - -/** - * Base launcher activity, to handle most of the common plumbing for samples. - */ -public class SampleActivityBase extends FragmentActivity { - - public static final String TAG = "SampleActivityBase"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - protected void onStart() { - super.onStart(); - initializeLogging(); - } - - /** Set up targets to receive log data */ - public void initializeLogging() { - // Using Log, front-end to the logging chain, emulates android.util.log method signatures. - // Wraps Android's native log framework - LogWrapper logWrapper = new LogWrapper(); - Log.setLogNode(logWrapper); - - Log.i(TAG, "Ready"); - } -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/assetprovider/AssetProvider.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/assetprovider/AssetProvider.java deleted file mode 100644 index f6c0f6139..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/assetprovider/AssetProvider.java +++ /dev/null @@ -1,140 +0,0 @@ -/* -* Copyright (C) 2013 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.common.assetprovider; - -import android.content.ContentProvider; -import android.content.ContentValues; -import android.content.Context; -import android.content.res.AssetFileDescriptor; -import android.content.res.AssetManager; -import android.database.Cursor; -import android.net.Uri; - -import java.io.FileNotFoundException; -import java.io.IOException; - -import static java.net.URLConnection.guessContentTypeFromName; - -/** - * Generic content provider, which makes any files available in this app's "assets" directory - * available publicly. - * - *
To use, add the following to your AndroidManifest.xml:
- *
- *
- */
-public class AssetProvider extends ContentProvider {
- AssetManager mAssets;
-
- @Override
- public boolean onCreate() {
- Context ctx = getContext();
- if (ctx == null) {
- // Context not available. Give up.
- return false;
- }
- mAssets = ctx.getAssets();
- return true;
- }
-
- @Override
- public String getType(Uri uri){
- // Returns the MIME type for the selected URI, in conformance with the ContentProvider
- // interface. Looks up the file indicated by /res/assets/{uri.path}, and returns the MIME
- // type for that file as guessed by the URLConnection class.
-
- // Setup
- String path = uri.getPath();
-
- // Check if file exists
- if (!fileExists(path)) {
- return null;
- }
-
- // Determine MIME-type based on filename
- return guessContentTypeFromName(uri.toString());
- }
-
-
- @Override
- public AssetFileDescriptor openAssetFile (Uri uri, String mode)
- throws FileNotFoundException, SecurityException {
- // ContentProvider interface for opening a file descriptor by URI. This content provider
- // maps all URIs to the contents of the APK's assets folder, so a file handle to
- // /res/assets/{uri.path} will be returned.
-
- // Security check. This content provider only supports read-only access. (Also, the contents
- // of an APKs assets folder are immutable, so read-write access doesn't make sense here.)
- if (!"r".equals(mode)) {
- throw new SecurityException("Only read-only access is supported, mode must be [r]");
- }
-
- // Open asset from within APK and return file descriptor
- String path = uri.getPath();
- try {
- return mAssets.openFd(path);
- } catch (IOException e) {
- throw new FileNotFoundException();
- }
- }
-
- /**
- * Check if file exists inside APK assets.
- *
- * @param path Fully qualified path to file.
- * @return true if exists, false otherwise.
- */
- private boolean fileExists(String path) {
- try {
- // Check to see if file can be opened. If so, file exists.
- mAssets.openFd(path).close();
- return true;
- } catch (IOException e) {
- // Unable to open file descriptor for specified path; file doesn't exist.
- return false;
- }
- }
-
- // Required/unused ContentProvider methods below.
- @Override
- public Cursor query(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- // Note: It might be worth implementing support for querying
- // android.provider.OpenableColumns here in the future.
- throw new RuntimeException("Operation not supported");
- }
-
- @Override
- public Uri insert(Uri uri, ContentValues contentValues) {
- throw new RuntimeException("Operation not supported");
- }
-
- @Override
- public int delete(Uri uri, String selection, String[] selectionArgs) {
- throw new RuntimeException("Operation not supported");
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
- throw new RuntimeException("Operation not supported");
- }
-}
diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/Log.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/Log.java
deleted file mode 100644
index 17503c568..000000000
--- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/Log.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2013 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.common.logger;
-
-/**
- * Helper class for a list (or tree) of LoggerNodes.
- *
- *
- *
When this is set as the head of the list, - * an instance of it can function as a drop-in replacement for {@link android.util.Log}. - * Most of the methods in this class server only to map a method call in Log to its equivalent - * in LogNode.
- */ -public class Log { - // Grabbing the native values from Android's native logging facilities, - // to make for easy migration and interop. - public static final int NONE = -1; - public static final int VERBOSE = android.util.Log.VERBOSE; - public static final int DEBUG = android.util.Log.DEBUG; - public static final int INFO = android.util.Log.INFO; - public static final int WARN = android.util.Log.WARN; - public static final int ERROR = android.util.Log.ERROR; - public static final int ASSERT = android.util.Log.ASSERT; - - // Stores the beginning of the LogNode topology. - private static LogNode mLogNode; - - /** - * Returns the next LogNode in the linked list. - */ - public static LogNode getLogNode() { - return mLogNode; - } - - /** - * Sets the LogNode data will be sent to. - */ - public static void setLogNode(LogNode node) { - mLogNode = node; - } - - /** - * Instructs the LogNode to print the log data provided. Other LogNodes can - * be chained to the end of the LogNode as desired. - * - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void println(int priority, String tag, String msg, Throwable tr) { - if (mLogNode != null) { - mLogNode.println(priority, tag, msg, tr); - } - } - - /** - * Instructs the LogNode to print the log data provided. Other LogNodes can - * be chained to the end of the LogNode as desired. - * - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - */ - public static void println(int priority, String tag, String msg) { - println(priority, tag, msg, null); - } - - /** - * Prints a message at VERBOSE priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void v(String tag, String msg, Throwable tr) { - println(VERBOSE, tag, msg, tr); - } - - /** - * Prints a message at VERBOSE priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void v(String tag, String msg) { - v(tag, msg, null); - } - - - /** - * Prints a message at DEBUG priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void d(String tag, String msg, Throwable tr) { - println(DEBUG, tag, msg, tr); - } - - /** - * Prints a message at DEBUG priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void d(String tag, String msg) { - d(tag, msg, null); - } - - /** - * Prints a message at INFO priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void i(String tag, String msg, Throwable tr) { - println(INFO, tag, msg, tr); - } - - /** - * Prints a message at INFO priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void i(String tag, String msg) { - i(tag, msg, null); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void w(String tag, String msg, Throwable tr) { - println(WARN, tag, msg, tr); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void w(String tag, String msg) { - w(tag, msg, null); - } - - /** - * Prints a message at WARN priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void w(String tag, Throwable tr) { - w(tag, null, tr); - } - - /** - * Prints a message at ERROR priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void e(String tag, String msg, Throwable tr) { - println(ERROR, tag, msg, tr); - } - - /** - * Prints a message at ERROR priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void e(String tag, String msg) { - e(tag, msg, null); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void wtf(String tag, String msg, Throwable tr) { - println(ASSERT, tag, msg, tr); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. - */ - public static void wtf(String tag, String msg) { - wtf(tag, msg, null); - } - - /** - * Prints a message at ASSERT priority. - * - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public static void wtf(String tag, Throwable tr) { - wtf(tag, null, tr); - } -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogFragment.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogFragment.java deleted file mode 100644 index b302acd4b..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogFragment.java +++ /dev/null @@ -1,109 +0,0 @@ -/* -* Copyright 2013 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. -*/ -/* - * Copyright 2013 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.common.logger; - -import android.graphics.Typeface; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ScrollView; - -/** - * Simple fraggment which contains a LogView and uses is to output log data it receives - * through the LogNode interface. - */ -public class LogFragment extends Fragment { - - private LogView mLogView; - private ScrollView mScrollView; - - public LogFragment() {} - - public View inflateViews() { - mScrollView = new ScrollView(getActivity()); - ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT); - mScrollView.setLayoutParams(scrollParams); - - mLogView = new LogView(getActivity()); - ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams); - logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; - mLogView.setLayoutParams(logParams); - mLogView.setClickable(true); - mLogView.setFocusable(true); - mLogView.setTypeface(Typeface.MONOSPACE); - - // Want to set padding as 16 dips, setPadding takes pixels. Hooray math! - int paddingDips = 16; - double scale = getResources().getDisplayMetrics().density; - int paddingPixels = (int) ((paddingDips * (scale)) + .5); - mLogView.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels); - mLogView.setCompoundDrawablePadding(paddingPixels); - - mLogView.setGravity(Gravity.BOTTOM); - mLogView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Holo_Medium); - - mScrollView.addView(mLogView); - return mScrollView; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - View result = inflateViews(); - - mLogView.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) {} - - @Override - public void afterTextChanged(Editable s) { - mScrollView.fullScroll(ScrollView.FOCUS_DOWN); - } - }); - return result; - } - - public LogView getLogView() { - return mLogView; - } -} \ No newline at end of file diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogNode.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogNode.java deleted file mode 100644 index bc37cabc0..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogNode.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2012 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.common.logger; - -/** - * Basic interface for a logging system that can output to one or more targets. - * Note that in addition to classes that will output these logs in some format, - * one can also implement this interface over a filter and insert that in the chain, - * such that no targets further down see certain data, or see manipulated forms of the data. - * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data - * it received to HTML and sent it along to the next node in the chain, without printing it - * anywhere. - */ -public interface LogNode { - - /** - * Instructs first LogNode in the list to print the log data provided. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - public void println(int priority, String tag, String msg, Throwable tr); - -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogView.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogView.java deleted file mode 100644 index c01542b91..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogView.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (C) 2013 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.common.logger; - -import android.app.Activity; -import android.content.Context; -import android.util.*; -import android.widget.TextView; - -/** Simple TextView which is used to output log data received through the LogNode interface. -*/ -public class LogView extends TextView implements LogNode { - - public LogView(Context context) { - super(context); - } - - public LogView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public LogView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - /** - * Formats the log data and prints it out to the LogView. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - - - String priorityStr = null; - - // For the purposes of this View, we want to print the priority as readable text. - switch(priority) { - case android.util.Log.VERBOSE: - priorityStr = "VERBOSE"; - break; - case android.util.Log.DEBUG: - priorityStr = "DEBUG"; - break; - case android.util.Log.INFO: - priorityStr = "INFO"; - break; - case android.util.Log.WARN: - priorityStr = "WARN"; - break; - case android.util.Log.ERROR: - priorityStr = "ERROR"; - break; - case android.util.Log.ASSERT: - priorityStr = "ASSERT"; - break; - default: - break; - } - - // Handily, the Log class has a facility for converting a stack trace into a usable string. - String exceptionStr = null; - if (tr != null) { - exceptionStr = android.util.Log.getStackTraceString(tr); - } - - // Take the priority, tag, message, and exception, and concatenate as necessary - // into one usable line of text. - final StringBuilder outputBuilder = new StringBuilder(); - - String delimiter = "\t"; - appendIfNotNull(outputBuilder, priorityStr, delimiter); - appendIfNotNull(outputBuilder, tag, delimiter); - appendIfNotNull(outputBuilder, msg, delimiter); - appendIfNotNull(outputBuilder, exceptionStr, delimiter); - - // In case this was originally called from an AsyncTask or some other off-UI thread, - // make sure the update occurs within the UI thread. - ((Activity) getContext()).runOnUiThread( (new Thread(new Runnable() { - @Override - public void run() { - // Display the text we just generated within the LogView. - appendToLog(outputBuilder.toString()); - } - }))); - - if (mNext != null) { - mNext.println(priority, tag, msg, tr); - } - } - - public LogNode getNext() { - return mNext; - } - - public void setNext(LogNode node) { - mNext = node; - } - - /** Takes a string and adds to it, with a separator, if the bit to be added isn't null. Since - * the logger takes so many arguments that might be null, this method helps cut out some of the - * agonizing tedium of writing the same 3 lines over and over. - * @param source StringBuilder containing the text to append to. - * @param addStr The String to append - * @param delimiter The String to separate the source and appended strings. A tab or comma, - * for instance. - * @return The fully concatenated String as a StringBuilder - */ - private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) { - if (addStr != null) { - if (addStr.length() == 0) { - delimiter = ""; - } - - return source.append(addStr).append(delimiter); - } - return source; - } - - // The next LogNode in the chain. - LogNode mNext; - - /** Outputs the string as a new line of log data in the LogView. */ - public void appendToLog(String s) { - append("\n" + s); - } - - -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogWrapper.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogWrapper.java deleted file mode 100644 index 16a9e7ba2..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/LogWrapper.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2012 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.common.logger; - -import android.util.Log; - -/** - * Helper class which wraps Android's native Log utility in the Logger interface. This way - * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously. - */ -public class LogWrapper implements LogNode { - - // For piping: The next node to receive Log data after this one has done its work. - private LogNode mNext; - - /** - * Returns the next LogNode in the linked list. - */ - public LogNode getNext() { - return mNext; - } - - /** - * Sets the LogNode data will be sent to.. - */ - public void setNext(LogNode node) { - mNext = node; - } - - /** - * Prints data out to the console using Android's native log mechanism. - * @param priority Log level of the data being logged. Verbose, Error, etc. - * @param tag Tag for for the log data. Can be used to organize log statements. - * @param msg The actual message to be logged. The actual message to be logged. - * @param tr If an exception was thrown, this can be sent along for the logging facilities - * to extract and print useful information. - */ - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - // There actually are log methods that don't take a msg parameter. For now, - // if that's the case, just convert null to the empty string and move on. - String useMsg = msg; - if (useMsg == null) { - useMsg = ""; - } - - // If an exeption was provided, convert that exception to a usable string and attach - // it to the end of the msg method. - if (tr != null) { - msg += "\n" + Log.getStackTraceString(tr); - } - - // This is functionally identical to Log.x(tag, useMsg); - // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg) - Log.println(priority, tag, useMsg); - - // If this isn't the last node in the chain, move things along. - if (mNext != null) { - mNext.println(priority, tag, msg, tr); - } - } -} diff --git a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/MessageOnlyLogFilter.java b/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/MessageOnlyLogFilter.java deleted file mode 100644 index 19967dcd4..000000000 --- a/samples/browseable/BeamLargeFiles/src/com.example.android.common/logger/MessageOnlyLogFilter.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2013 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.common.logger; - -/** - * Simple {@link LogNode} filter, removes everything except the message. - * Useful for situations like on-screen log output where you don't want a lot of metadata displayed, - * just easy-to-read message updates as they're happening. - */ -public class MessageOnlyLogFilter implements LogNode { - - LogNode mNext; - - /** - * Takes the "next" LogNode as a parameter, to simplify chaining. - * - * @param next The next LogNode in the pipeline. - */ - public MessageOnlyLogFilter(LogNode next) { - mNext = next; - } - - public MessageOnlyLogFilter() { - } - - @Override - public void println(int priority, String tag, String msg, Throwable tr) { - if (mNext != null) { - getNext().println(Log.NONE, null, msg, null); - } - } - - /** - * Returns the next LogNode in the chain. - */ - public LogNode getNext() { - return mNext; - } - - /** - * Sets the LogNode data will be sent to.. - */ - public void setNext(LogNode node) { - mNext = node; - } - -}