2016-09-04 4 views
1

Ive가 Google Cast Android 앱을 사용해 보았으며 5.0 이하의 기기에서 작동하지 않습니다. 누구나 이유가 무엇입니까? 내 충돌 로그는 다음과 같습니다.Google Cast SDK3 5.0 이하 기기에서 Android 샘플 앱이 다운 됨

0830 12 : 38 : 57.242 : E/AndroidRuntime (16269) : 원인 : java.lang.RuntimeException : com.google.android.gms.internal.zzsb $ zza : 아니요 허용되는 모듈을 찾았습니다. 로컬 버전은 0이고 원격 버전은 0입니다. 0830 12 : 38 : 57.242 : E/AndroidRuntime (16269) : com.google.android.gms.internal.zzni.zzbg (알 수없는 출처) 0830 12:38 : 57.242 : E/AndroidRuntime (16269) : com.google.android.gms.internal.zzni.zza (알 수없는 출처) 0830 12 : 38 : 57.242 : E/AndroidRuntime (16269) : com.google.android .gms.cast.framework.CastContext 没有 加一

+0

테스트 할 실제 장치입니까, 아니면 에뮬레이터입니까?적절한 Google Play 서비스가 있나요? –

+0

나는 진짜 장치, samsung 하나를 사용했다, 나는 그것이 적절한 구글 플레이 서비스를 가지고 있다고 생각하고 그것의 구글 샘플 앱을 ... – Qing

+0

'com.google.android.gms : play-services : 9.4.0'을 컴파일하라. 'com.android.support:appcompat-v7:24.1.1' 'com.android.support :mediarouter-v7:24.1.1' 'com.android.support:recyclerview-v7:24.1.1'을 (를) 컴파일하십시오. com.google.android.gms : play-services-cast-framework : 9.4.0 ' 'com.googlecode.android-query : android-query : 0.25.9 '를 컴파일하십시오. – Qing

답변

6

Google Play 서비스의 이전 버전과 호환되지 않는 (충돌) 최신 Cast SDK가 변경되었습니다. 불행히도 구형 GPS (또는 에뮬레이터)가있는 최신 Cast SDK를 사용할 때 샘플 앱 충돌이 발생합니다. 여기에서 문제를 논의했습니다. https://github.com/googlecast/CastVideos-android/issues/12

해결 방법은 미니 컨트롤러를 비롯한 모든 전송 구성 요소를 초기화하기 전에 Google Play 서비스 버전을 확인하는 것입니다 (예 : 미니 컨트롤러 조각을 XML 레이아웃 파일에 넣을 수 없음). 동적으로 팽창시켜야하거나, 미니 컨트롤러가없는 레이아웃 파일 하나와 미니 컨트롤러가없는 레이아웃 파일 두 가지가 있어야합니다. 결과가 ConnectionResult.SUCCESS없는 경우 MiniControllerFragment를 초기화하지 않는,

GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
int resultCode = apiAvailability.isGooglePlayServicesAvailable(context); 
isGPSAvailable = (resultCode == ConnectionResult.SUCCESS); 

CastContext에 액세스하지 않습니다

코드는 GPS 버전을 확인합니다. 이 new MiniControllerFragment()를 사용하여 MiniControllerFragment을 인스턴스화 할 수 하지 것을

또한 염두에 두시기 바랍니다. 당신은 xml에서 그것을 부풀려 야하거나 NullPointerException을 얻을 것이다.

  1. 별도의 XML 레이아웃 파일을 생성하고 Activity.onCreate에 적합한 하나를 부풀려 : MiniControllerFragment 가리키는 레이아웃에 ViewStub 만들기

    setContentView(isGPSAvailable ? R.layout.activity_main_with_controller : R.layout.activity_main_without_controller); 
    
  2. 및 팽창 MiniControllerFragment을 팽창하는 방법은 두 가지가 있습니다

    그것은 단지 당신이 놀이 서비스를 할 때입니다.

활동 레이아웃 :

<ViewStub 
android:id="@+id/cast_minicontroller" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout="@layout/cast_mini_controller_fragment" 
/> 

cast_mini_controller_fragment :

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/castMiniController" 
      class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 

코드 onCreate() 활동에 :

ViewStub miniControllerStub = (ViewStub) findViewById(R.id.cast_minicontroller); 
if (isGPSAvailable) { 
    miniControllerStub.inflate(); 
} 

은 내가 ViewStub AP를 선호 Proach는 레이아웃을 복제하지 않으므로