diff options
9 files changed, 106 insertions, 36 deletions
diff --git a/samples/ApiDemos/src/com/example/android/apis/os/MmsMessagingDemo.java b/samples/ApiDemos/src/com/example/android/apis/os/MmsMessagingDemo.java index 6a5d94c99..0b66d6f5b 100644 --- a/samples/ApiDemos/src/com/example/android/apis/os/MmsMessagingDemo.java +++ b/samples/ApiDemos/src/com/example/android/apis/os/MmsMessagingDemo.java @@ -238,7 +238,8 @@ public class MmsMessagingDemo extends Activity { if (code == Activity.RESULT_OK) { final byte[] response = intent.getByteArrayExtra(SmsManager.EXTRA_MMS_DATA); if (response != null) { - final GenericPdu pdu = new PduParser(response).parse(); + final GenericPdu pdu = new PduParser( + response, PduParserUtil.shouldParseContentDisposition()).parse(); if (pdu instanceof SendConf) { final SendConf sendConf = (SendConf) pdu; if (sendConf.getResponseStatus() == PduHeaders.RESPONSE_STATUS_OK) { @@ -281,7 +282,8 @@ public class MmsMessagingDemo extends Activity { final byte[] response = new byte[nBytes]; final int read = reader.read(response, 0, nBytes); if (read == nBytes) { - final GenericPdu pdu = new PduParser(response).parse(); + final GenericPdu pdu = new PduParser( + response, PduParserUtil.shouldParseContentDisposition()).parse(); if (pdu instanceof RetrieveConf) { final RetrieveConf retrieveConf = (RetrieveConf) pdu; mRecipientsInput.setText(getRecipients(context, retrieveConf)); diff --git a/samples/ApiDemos/src/com/example/android/apis/os/MmsWapPushReceiver.java b/samples/ApiDemos/src/com/example/android/apis/os/MmsWapPushReceiver.java index a291e4aee..f2ca090b0 100644 --- a/samples/ApiDemos/src/com/example/android/apis/os/MmsWapPushReceiver.java +++ b/samples/ApiDemos/src/com/example/android/apis/os/MmsWapPushReceiver.java @@ -16,18 +16,18 @@ package com.example.android.apis.os; -import com.google.android.mms.ContentType; -import com.google.android.mms.pdu.GenericPdu; -import com.google.android.mms.pdu.NotificationInd; -import com.google.android.mms.pdu.PduHeaders; -import com.google.android.mms.pdu.PduParser; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.provider.Telephony; import android.util.Log; +import com.google.android.mms.ContentType; +import com.google.android.mms.pdu.GenericPdu; +import com.google.android.mms.pdu.NotificationInd; +import com.google.android.mms.pdu.PduHeaders; +import com.google.android.mms.pdu.PduParser; + /** * Receiver for MMS WAP push */ @@ -39,7 +39,8 @@ public class MmsWapPushReceiver extends BroadcastReceiver { if (Telephony.Sms.Intents.WAP_PUSH_RECEIVED_ACTION.equals(intent.getAction()) && ContentType.MMS_MESSAGE.equals(intent.getType())) { final byte[] data = intent.getByteArrayExtra("data"); - final PduParser parser = new PduParser(data); + final PduParser parser = new PduParser( + data, PduParserUtil.shouldParseContentDisposition()); GenericPdu pdu = null; try { pdu = parser.parse(); diff --git a/samples/ApiDemos/src/com/example/android/apis/os/PduParserUtil.java b/samples/ApiDemos/src/com/example/android/apis/os/PduParserUtil.java new file mode 100644 index 000000000..541854e6e --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/os/PduParserUtil.java @@ -0,0 +1,37 @@ +/* + * 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.apis.os; + +import android.telephony.SmsManager; + +/** + * Util methods for PduParser + */ +public class PduParserUtil { + /** + * Get the config of whether Content-Disposition header is supported + * for default carrier using new SmsManager API + * + * @return true if supported, false otherwise + */ + public static boolean shouldParseContentDisposition() { + return SmsManager + .getDefault() + .getCarrierConfigValues() + .getBoolean(SmsManager.MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION, true); + } +} diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseAnimationFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseAnimationFragment.java index 8166e6e7c..bade6c3e4 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseAnimationFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseAnimationFragment.java @@ -76,7 +76,7 @@ public class BrowseAnimationFragment extends mRowsAdapter = new ArrayObjectAdapter(lrp); for (int i = 0; i < NUM_ROWS; ++i) { mRowsAdapter.add( - createRandomRow(new HeaderItem(i, "Row " + i, null))); + createRandomRow(new HeaderItem(i, "Row " + i))); } setAdapter(mRowsAdapter); } @@ -198,7 +198,7 @@ public class BrowseAnimationFragment extends if (index >= 0) { int headerId = sRand.nextInt(); mRowsAdapter.add(index, createRandomRow(new HeaderItem( - headerId, "Row " + headerId, null))); + headerId, "Row " + headerId))); } } }); @@ -211,7 +211,7 @@ public class BrowseAnimationFragment extends int headerId = sRand.nextInt(); mRowsAdapter.add( index + 1, createRandomRow(new HeaderItem( - headerId, "Row " + headerId, null))); + headerId, "Row " + headerId))); } } }); diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseErrorActivity.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseErrorActivity.java index a35ab5ef7..f2f61925f 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseErrorActivity.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseErrorActivity.java @@ -50,6 +50,9 @@ public class BrowseErrorActivity extends Activity handler.postDelayed(new Runnable() { @Override public void run() { + if (getFragmentManager().isDestroyed()) { + return; + } getFragmentManager().beginTransaction().remove(mSpinnerFragment).commit(); mErrorFragment.setErrorContent(getResources()); } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java index c44812b0d..a73242b10 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java @@ -67,7 +67,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm if (TEST_ENTRANCE_TRANSITION) { // don't run entrance transition if Activity is restored. if (savedInstanceState == null) { - setEntranceTransitionEnabled(true); + prepareEntranceTransition(); } // simulate delay loading data new Handler().postDelayed(new Runnable() { @@ -99,7 +99,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm listRowAdapter.add(new PhotoItem("This is a test", "Only a test", R.drawable.gallery_photo_6)); listRowAdapter.add(new PhotoItem("Android TV", "by Google", R.drawable.gallery_photo_7)); listRowAdapter.add(new PhotoItem("Leanback", "click to open MainActivity", R.drawable.gallery_photo_8)); - HeaderItem header = new HeaderItem(i, "Row " + i, null); + HeaderItem header = new HeaderItem(i, "Row " + i); mRowsAdapter.add(new ListRow(header, listRowAdapter)); } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java index a5266452f..5354efd88 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java @@ -16,6 +16,7 @@ package com.example.android.leanback; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.os.Handler; import android.support.v4.app.ActivityOptionsCompat; import android.support.v17.leanback.widget.Action; import android.support.v17.leanback.widget.ArrayObjectAdapter; @@ -42,11 +43,18 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra private static final int NUM_ROWS = 3; private ArrayObjectAdapter mRowsAdapter; private PhotoItem mPhotoItem; + final CardPresenter cardPresenter = new CardPresenter(); private static final int ACTION_BUY = 1; private static final int ACTION_RENT = 2; private static final int ACTION_PLAY = 3; + private static final boolean TEST_SHARED_ELEMENT_TRANSITION = true; + private static final boolean TEST_ENTRANCE_TRANSITION = true; + + private static final long TIME_TO_LOAD_OVERVIEW_ROW_MS = 1000; + private static final long TIME_TO_LOAD_RELATED_ROWS_MS = 2000; + @Override public void onCreate(Bundle savedInstanceState) { Log.i(TAG, "onCreate"); @@ -87,8 +95,6 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra if (item != null) { setItem(item); } - dorPresenter.setSharedElementEnterTransition(getActivity(), - DetailsActivity.SHARED_ELEMENT_NAME); setOnItemViewClickedListener(new OnItemViewClickedListener() { @Override @@ -114,6 +120,17 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra Log.i(TAG, "onItemSelected: " + item + " row " + row); } }); + + if (TEST_SHARED_ELEMENT_TRANSITION) { + dorPresenter.setSharedElementEnterTransition(getActivity(), + DetailsActivity.SHARED_ELEMENT_NAME); + } + if (TEST_ENTRANCE_TRANSITION) { + // don't run entrance transition if Activity is restored. + if (savedInstanceState == null) { + prepareEntranceTransition(); + } + } } @Override @@ -126,24 +143,34 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra mPhotoItem = photoItem; mRowsAdapter.clear(); - Resources res = getActivity().getResources(); - DetailsOverviewRow dor = new DetailsOverviewRow(photoItem.getTitle()); - dor.setImageDrawable(res.getDrawable(photoItem.getImageResourceId())); - dor.addAction(new Action(ACTION_BUY, "Buy $9.99")); - dor.addAction(new Action(ACTION_RENT, "Rent", "$3.99", res.getDrawable(R.drawable.ic_action_a))); - mRowsAdapter.add(dor); - - final CardPresenter cardPresenter = new CardPresenter(); - for (int i = 0; i < NUM_ROWS; ++i) { - ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter); - listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); - listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2)); - listRowAdapter.add(new PhotoItem("Android TV", R.drawable.gallery_photo_3)); - listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_4)); - HeaderItem header = new HeaderItem(i, "Row " + i, null); - mRowsAdapter.add(new ListRow(header, listRowAdapter)); - } - + new Handler().postDelayed(new Runnable() { + public void run() { + Resources res = getActivity().getResources(); + DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle()); + dor.setImageDrawable(res.getDrawable(mPhotoItem.getImageResourceId())); + dor.addAction(new Action(ACTION_BUY, "Buy $9.99")); + dor.addAction(new Action(ACTION_RENT, "Rent", "$3.99", res.getDrawable(R.drawable.ic_action_a))); + mRowsAdapter.add(0, dor); + setSelectedPosition(0, false); + } + }, TIME_TO_LOAD_OVERVIEW_ROW_MS); + + new Handler().postDelayed(new Runnable() { + public void run() { + for (int i = 0; i < NUM_ROWS; ++i) { + ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter); + listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); + listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2)); + listRowAdapter.add(new PhotoItem("Android TV", R.drawable.gallery_photo_3)); + listRowAdapter.add(new PhotoItem("Leanback", R.drawable.gallery_photo_4)); + HeaderItem header = new HeaderItem(i, "Row " + i, null); + mRowsAdapter.add(new ListRow(header, listRowAdapter)); + } + if (TEST_ENTRANCE_TRANSITION) { + startEntranceTransition(); + } + } + }, TIME_TO_LOAD_RELATED_ROWS_MS); setAdapter(mRowsAdapter); } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java index ed3d64f10..f11c84389 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java @@ -236,7 +236,7 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter()); listRowAdapter.add("Some related content"); listRowAdapter.add("Other related content"); - HeaderItem header = new HeaderItem(i, "Row " + i, null); + HeaderItem header = new HeaderItem(i, "Row " + i); mRowsAdapter.add(new ListRow(header, listRowAdapter)); } } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java index c271bc114..b55b82ffe 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java @@ -73,7 +73,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new CardPresenter()); listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1)); listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2)); - HeaderItem header = new HeaderItem(i, mQuery + " results row " + i, null); + HeaderItem header = new HeaderItem(i, mQuery + " results row " + i); mRowsAdapter.add(new ListRow(header, listRowAdapter)); } } |
