2013-05-30 2 views
2

큰 오디오 및 비디오 파일이 포함 된 PhoneGap 응용 프로그램을 작성 중입니다. Android에서 미디어 파일은 확장 파일에 있어야 애플리케이션 크기가 Google Play 50MB 한도 이하로 유지됩니다. (어쩌면 일시적으로)Android 확장 파일의 특정 파일에 URL을 가져 오는 방법이 있습니까?

  1. 의 포장을 풀고 원하는 비디오 파일 확장 파일에서 sdcard에 URL을 얻을 미디어 플레이어 응용 프로그램을 시작하기 :

    저는 현재 비디오 파일을 재생하는 두 가지 방법을 고려하고있다. 언팩은 약간의 시간이 걸리므로 사용자는 비디오의 크기에 따라 몇 초를 기다려야합니다.

  2. Android의 VideoView 클래스를 사용하여 내 비디오 플레이어를 PhoneGap 플러그인으로 작성하십시오. 이렇게하면 파일을 압축 해제하지 않고 확장 파일에서 직접 재생할 수 있고 응답 성이 뛰어난 응용 프로그램을 얻을 수 있습니다.

그러나 확장 파일의 비디오 파일에 URL을 가져 오는 방법이 있는지 궁금합니다. 그러면 내 응용 프로그램이 사용자의 기본 미디어 플레이어 응용 프로그램이 시작된 의도에 URL을 추가 할 수있게되어이 방법을 선호합니다.

답변

2

자신이 콘텐츠 제공 업체를 통해이를 수행하는 방법을 찾았습니다. 질문이 android play movie inside expansion file 인 콘텐츠 제공 업체에 대한 힌트를 얻었지만 그 질문에서 URL은 외부 응용 프로그램을 시작하는 데 사용되지 않았습니다.

우리는 구글의 APEZProvider 확장하는 컨텐트 프로 클래스가 필요합니다

public class ZipFileContentProvider extends APEZProvider { 
    @Override 
    public String getAuthority() { 
     return "com.example.expansionexperiment.provider"; 
    } 
} 

을 그리고 매니페스트에 추가하고 내 보내야 :

<provider 
    android:exported="true" 
    android:name="com.example.expansionexperiment.ZipFileContentProvider" 
    android:authorities="com.example.expansionexperiment.provider" /> 

(매니페스트 및 getAuthority의 권한)해야 똑같아.

이제 우리는 확장 파일 내부의 파일에 열린 우리당을 만들 수 있습니다

// Filename inside my expansion file 
String filename = "video/video.mp4"; 
String uriString = "content://com.example.expansionexperiment.provider" + File.separator + filename; 
Uri uri = Uri.parse(uriString); 

// Start video view intent 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(uri, "video/*"); 
startActivity(intent); 

콘텐츠 제공자가 제공하는 지금 바로 URL과 함께 내에서 zip 파일 및 파일에 액세스 할 수 있습니다.

그러나 PhoneGap의 Media 플러그인은 URL이 http로 시작하지 않으면 "/ sdcard /"를 URL 앞에 삽입하기 때문에 콘텐츠 공급자를 지원하지 않습니다. (!!!) 따라서 Zip 콘텐츠 제공 업체를 통해 오디오 파일을 재생하려면 오디오 플러그인을 직접 작성해야합니다.

+0

궁금한 점이 있다면 File 플러그인이 URL을 찾을 수 없기 때문입니다. https://github.com/agamemnus/cordova-plugin-media/commit/6fd5193225c291a11b65e6a261b0974a30e30e8d ... Pasi : 예를 들어 Chromium을 퍼가기 위해 더 이상 미디어 플러그인을 사용할 필요가 없습니다. 횡단 보도와''플랫폼/안드로이드/자산/xwalk-command-line''에서''xwalk - 미디어 재생을위한 필수 - 제스처 요구 사항 ''을 사용하십시오! – Agamemnus

관련 문제