/*
* 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.supportv7.media;
import com.example.android.supportv7.R;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.MediaRouteActionProvider;
import android.support.v7.app.MediaRouteDiscoveryFragment;
import android.support.v7.media.MediaControlIntent;
import android.support.v7.media.MediaRouter;
import android.support.v7.media.MediaRouter.Callback;
import android.support.v7.media.MediaRouter.RouteInfo;
import android.support.v7.media.MediaRouter.ProviderInfo;
import android.support.v7.media.MediaRouteSelector;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
/**
* <h3>Media Router Support Activity</h3>
*
* <p>
* This demonstrates how to use the {@link MediaRouter} API to build an
* application that allows the user to send content to various rendering
* targets.
* </p>
*/
public class SampleMediaRouterActivity extends ActionBarActivity {
private static final String TAG = "MediaRouterSupport";
private static final String DISCOVERY_FRAGMENT_TAG = "DiscoveryFragment";
private MediaRouter mMediaRouter;
private MediaRouteSelector mSelector;
private ArrayAdapter<MediaItem> mMediaItems;
private TextView mInfoTextView;
private ListView mMediaListView;
private Button mPlayButton;
private Button mStatisticsButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// Be sure to call the super class.
super.onCreate(savedInstanceState);
// Get the media router service.
mMediaRouter = MediaRouter.getInstance(this);
// Create a route selector for the type of routes that we care about.
mSelector = new MediaRouteSelector.Builder()
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.addControlCategory(SampleMediaRouteProvider.CATEGORY_SAMPLE_ROUTE)
.build();
// Add a fragment to take care of media route discovery.
// This fragment automatically adds or removes a callback whenever the activity
// is started or stopped.
FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag(DISCOVERY_FRAGMENT_TAG) == null) {
DiscoveryFragment fragment = new DiscoveryFragment();
fragment.setRouteSelector(mSelector);
fm.beginTransaction()
.add(fragment, DISCOVERY_FRAGMENT_TAG)
.commit();
}
// Populate an array adapter with fake media items.
String[] mediaNames = getResources().getStringArray(R.array.media_names);
String[] mediaUris = getResources().getStringArray(R.array.media_uris);
mMediaItems = new ArrayAdapter<MediaItem>(this,
android.R.layout.simple_list_item_single_choice, android.R.id.text1);
for (int i = 0; i < mediaNames.length; i++) {
mMediaItems.add(new MediaItem(mediaNames[i], Uri.parse(mediaUris[i])));
}
// Initialize the layout.
setContentView(R.layout.sample_media_router);
mInfoTextView = (TextView)findViewById(R.id.info);
mMediaListView = (ListView)findViewById(R.id.media);
mMediaListView.setAdapter(mMediaItems);
mMediaListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mMediaListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
updateButtons();
}
});
mPlayButton = (Button)findViewById(R.id.play_button);
mPlayButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
play();
}
});
mStatisticsButton = (Button)findViewById(R.id.statistics_button);
mStatisticsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showStatistics();
}
});
}
@Override
public void onStart() {
// Be sure to call the super class.
super.onStart();
updateRouteDescription();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Be sure to call the super class.
super.onCreateOptionsMenu(menu);
// Inflate the menu and configure the media router action provider.
getMenuInflater().inflate(R.menu.sample_media_router_menu, menu);
MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider =
(MediaRouteActionProvider)MenuItemCompat.getActionProvider(mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(mSelector);
// Return true to show the menu.
return true;
}
private void updateRouteDescription() {
RouteInfo route = mMediaRouter.getSelectedRoute();
mInfoTextView.setText("Currently selected route: " + route.getName()
+ " from provider " + route.getProvider().getPackageName()
+ ", description: " + route.getDescription());
updateButtons();
}
private void updateButtons() {
MediaRouter.RouteInfo route = mMediaRouter.getSelectedRoute();
MediaItem item = getCheckedMediaItem();
if (item != null) {
mPlayButton.setEnabled(route.supportsControlRequest(makePlayIntent(item)));
} else {
mPlayButton.setEnabled(false);
}
mStatisticsButton.setEnabled(route.supportsControlRequest(makeStatisticsIntent()));
}
private void play() {
final MediaItem item = getCheckedMediaItem();
if (item == null) {
return;
}
MediaRouter.RouteInfo route = mMediaRouter.getSelectedRoute();
Intent intent = makePlayIntent(item);
if (route.supportsControlRequest(intent)) {
MediaRouter.ControlRequestCallback callback =
new MediaRouter.ControlRequestCallback() {
@Override
public void onResult(Bundle data) {
String streamId = data != null ? data.getString(
MediaControlIntent.EXTRA_ITEM_ID) : null;
Log.d(TAG, "Play request succeeded: data=" + data + " , streamId=" + streamId);
Toast.makeText(SampleMediaRouterActivity.this,
"Now playing " + item.mName,
Toast.LENGTH_LONG).show();
}
@Override
public void onError(String error,
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Support7Demos.rar (37个子文件)
Support7Demos
src
com
example
android
supportv7
view
GridLayout3.java 5KB
GridLayout1.java 1KB
GridLayout2.java 1KB
media
SampleMediaRouteProvider.java 10KB
SampleMediaRouterActivity.java 15KB
SampleMediaRouteProviderService.java 1KB
Support7Demos.java 5KB
app
ActionBarSettingsActionProviderActivity.java 4KB
ActionBarUsage.java 4KB
ActionBarDisplayOptions.java 5KB
ActionBarFragmentMenu.java 9KB
ActionBarTabs.java 5KB
ActionBarMechanics.java 3KB
AndroidManifest.xml 7KB
res
drawable-hdpi
ic_launcher_settings.png 7KB
apidemo_androidlogo.png 3KB
app_sample_code.png 4KB
menu
display_options_actions.xml 943B
action_bar_settings_action_provider.xml 1KB
sample_media_router_menu.xml 1008B
actions.xml 2KB
drawable-mdpi
ic_launcher_settings.png 4KB
apidemo_androidlogo.png 2KB
app_sample_code.png 5KB
layout
grid_layout_1.xml 2KB
action_bar_display_options.xml 3KB
sample_media_router.xml 3KB
action_bar_tab_content.xml 868B
action_bar_fragment_menu.xml 2KB
action_bar_settings_action_provider.xml 1KB
action_bar_tabs.xml 2KB
action_bar_display_options_custom.xml 801B
grid_layout_2.xml 2KB
values
colors.xml 743B
arrays.xml 1KB
strings.xml 5KB
layout-land
grid_layout_2.xml 2KB
共 37 条
- 1
as294985925
- 粉丝: 1
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页