我想找到一个的Chromecast设备和调节音量。
解决方案 获取设备 让您的设备列入白名单(你需要的设备序列号,并为您的HTML5接收器的URL) 您会派出两名APPID(开发/生产) 在你的开发环境,请务必更新到Android支持库V18 您将使用MediaRouter 在初始化
进口com.google.cast.CastContext;
语境的applicationContext = ...; CastContext castContext =新
CastContext(的applicationContext);
您将需要一个 MediaRouteButton
< android.support.v7.app.MediaRouteButton
机器人:ID =@ + ID / media_route_button
机器人:mediaRouteTypes =用户
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:能见度=看见/>
进口com.google.cast.CastContext;
进口com.google.cast.CastDevice;
进口com.google.cast.MediaRouteAdapter;
进口com.google.cast.MediaRouteHelper;
进口com.google.cast.MediaRouteStateChangeListener;
进口android.support.v4.app.FragmentActivity;
进口android.support.v7.app.MediaRouteButton;
进口android.support.v7.media.MediaRouteSelector;
进口android.support.v7.media.MediaRouter;
进口android.support.v7.media.MediaRouter.RouteInfo;
公共类MyCastActivity扩展FragmentActivity实现MediaRouteAdapter {
私人MediaRouteButton mMediaRouteButton;
私人MediaRouter mMediaRouter;
私人MediaRouteSelector mMediaRouteSelector;
私人MediaRouter.Callback mMediaRouterCallback;
私人CastDevice mSelectedDevice;
私人MediaRouteStateChangeListener mRouteStateListener;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.my_cast_activity);
mMediaRouteButton =(MediaRouteButton)findViewById(R.id.media_route_button);
构造一个 CastContext
mCastContext =新CastContext(getApplicationContext());
- MinimalCastMediaRouteProvider
通过调用注册
MediaRouteHelper.registerMinimalMediaRouteProvider
(),传递一个
对象实现的 MediaRouteAdapter
接口。
MediaRouteHelper.registerMinimalMediaRouteProvider(mCastContext,这一点);
mMediaRouter = MediaRouter.getInstance(getApplicationContext());
构造一个
MediaRouteSelector
通过调用
MediaRouteHelper.buildMediaRouteSelector()
。有两种形式的
这个方法:先不带任何参数,第二需要
接收器应用的名称和/或消息协议的列表。本
后一种形式,用于执行设备的过滤相当于
所做的SDK的 ApplicationSupportFilterListener
mMediaRouteSelector = MediaRouteHelper.buildMediaRouteSelector(MediaRouteHelper.CATEGORY_CAST);
分配MediaRouteSelector到MediaRouteButton。
mMediaRouteButton.setRouteSelector(mMediaRouteSelector);
实施一个
MediaRouter.Callback
,并把它添加到 MediaRouter
,
通过 CALLBACK_FLAG_REQUEST_DISCOVERY
到 MediaRouter
来
启动发现。当用户选择或取消选择的路线中的
GUI选择器,这个回调接口对应的方法
被调用。
mMediaRouterCallback =新MyMediaRouterCallback();
}
@覆盖
保护无效的OnStart(){
super.onStart();
mMediaRouter.addCallback(mMediaRouteSelector,mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
@覆盖
保护无效的onStop(){
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
@覆盖
保护无效的onDestroy(){
MediaRouteHelper.unregisterMediaRouteProvider(mCastContext);
mCastContext.dispose();
super.onDestroy();
}
在 MediaRouter.Callback
的 onRouteSelected()
的回调,使呼叫
为 MediaRouteHelper.requestCastDeviceForRoute()
以获得
CastDevice对象对于所选择的媒体路线,以及
MediaRouteStateChangeListener
这将需要时通知
路由容量或连接状态的变化。
私有类MyMediaRouterCallback扩展MediaRouter.Callback {
@覆盖
公共无效onRouteSelected(MediaRouter路由器,RouteInfo路线){
MediaRouteHelper.requestCastDeviceForRoute(路线);
}
@覆盖
公共无效onRouteUnselected(MediaRouter路由器,RouteInfo路线){
mSelectedDevice = NULL;
mRouteStateListener = NULL;
}
}
// MediaRouteAdapter实施
@覆盖
公共无效onDeviceAvailable(CastDevice设备,
MediaRouteStateChangeListener监听器){
mSelectedDevice =设备;
mRouteStateListener =侦听器;
}
@覆盖
公共无效onSetVolume(双量){
//手柄体积变化。
}
@覆盖
公共无效onUpdateVolume(双三角翼){
//手柄体积变化。
}
}
I'd like to discover a Chromecast device and adjust the volume.
解决方案 Get a device Get your device whitelisted (you'll need the device serial #, and a URL for your HTML5 receiver) You'll be sent two APPID (development / production) In your development environment make sure to update to Android Support Library v18 You'll be using MediaRouter Initializeimport com.google.cast.CastContext;
Context applicationContext = …; CastContext castContext = new
CastContext(applicationContext);
You'll need a MediaRouteButton
< android.support.v7.app.MediaRouteButton
android:id="@+id/media_route_button"
android:mediaRouteTypes="user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible" />
import com.google.cast.CastContext;
import com.google.cast.CastDevice;
import com.google.cast.MediaRouteAdapter;
import com.google.cast.MediaRouteHelper;
import com.google.cast.MediaRouteStateChangeListener;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.MediaRouteButton;
import android.support.v7.media.MediaRouteSelector;
import android.support.v7.media.MediaRouter;
import android.support.v7.media.MediaRouter.RouteInfo;
public class MyCastActivity extends FragmentActivity implements MediaRouteAdapter {
private MediaRouteButton mMediaRouteButton;
private MediaRouter mMediaRouter;
private MediaRouteSelector mMediaRouteSelector;
private MediaRouter.Callback mMediaRouterCallback;
private CastDevice mSelectedDevice;
private MediaRouteStateChangeListener mRouteStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_cast_activity);
mMediaRouteButton = (MediaRouteButton) findViewById(R.id.media_route_button);
Construct a CastContext
.
mCastContext = new CastContext(getApplicationContext());
- Register the MinimalCastMediaRouteProvider
by calling
MediaRouteHelper.registerMinimalMediaRouteProvider
(), passing an
object that implements the MediaRouteAdapter
interface.
MediaRouteHelper.registerMinimalMediaRouteProvider(mCastContext, this);
mMediaRouter = MediaRouter.getInstance(getApplicationContext());
Construct a MediaRouteSelector
by calling
MediaRouteHelper.buildMediaRouteSelector()
. There are two forms of
this method: the first takes no parameters and the second takes a
receiver application name and/or a list of message protocols. This
latter form is used to perform device filtering equivalent to that
done by the SDK’s ApplicationSupportFilterListener
.
mMediaRouteSelector = MediaRouteHelper.buildMediaRouteSelector( MediaRouteHelper.CATEGORY_CAST);
Assign the MediaRouteSelector to the MediaRouteButton.
mMediaRouteButton.setRouteSelector(mMediaRouteSelector);
Implement a MediaRouter.Callback
and add it to the MediaRouter
,
passing CALLBACK_FLAG_REQUEST_DISCOVERY
to the MediaRouter
to
initiate discovery. When the user selects or deselects a route in the
GUI picker, the corresponding method on this callback interface will
be invoked.
mMediaRouterCallback = new MyMediaRouterCallback();
}
@Override
protected void onStart() {
super.onStart();
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
@Override
protected void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
@Override
protected void onDestroy() {
MediaRouteHelper.unregisterMediaRouteProvider(mCastContext);
mCastContext.dispose();
super.onDestroy();
}
In the MediaRouter.Callback
’s onRouteSelected()
callback, make a call
to MediaRouteHelper.requestCastDeviceForRoute()
to obtain a
CastDevice object for the selected media route, as well as the
MediaRouteStateChangeListener
that will need to be notified whenever
route volume or connecting state changes.
private class MyMediaRouterCallback extends MediaRouter.Callback {
@Override
public void onRouteSelected(MediaRouter router, RouteInfo route) {
MediaRouteHelper.requestCastDeviceForRoute(route);
}
@Override
public void onRouteUnselected(MediaRouter router, RouteInfo route) {
mSelectedDevice = null;
mRouteStateListener = null;
}
}
// MediaRouteAdapter implementation
@Override
public void onDeviceAvailable(CastDevice device,
MediaRouteStateChangeListener listener) {
mSelectedDevice = device;
mRouteStateListener = listener;
}
@Override
public void onSetVolume(double volume) {
// Handle volume change.
}
@Override
public void onUpdateVolume(double delta) {
// Handle volume change.
}
}
相关推荐
最新文章