Android アプリ開発のベスト プラクティス

Product
Video Cloud
対象となる役割
開発者
バージョン
Brightcove 5
エディション
Express 499, Pro, Enterprise

Video Cloud App SDK for Android を使って開発を行う際に、避けたい落とし穴がいくつかあります。ここでの概説は、アプリケーションを正しくプログラミングするために役立ちます。Video Cloud App SDK for Android に関する以下のドキュメントについてもご確認ください。

ユニット テスト

ユニット テストは、アプリケーションをより安定させ、意図した通りにコードが機能しているかを確認するための優れた方法です。Google Android SDK には JUnit サポートが含まれており、また Eclipse IDE 用に便利なプラグインも用意されています。

よくあるエラー シナリオへの対処

API トークンを入力する必要があります。そうしなかった場合は、呼び出しを試みた際に BCMediaAPI がエラー処理を実行します。トークンは ReadAPI クラス経由で定義され、望みの API メソッドの呼び出しに使用することができます。たとえば、findAllVideos() メソッドを呼び出すには、以下を記述します。

private void makeAPICall() {
        ReadAPI api = new ReadAPI("TOKEN HERE");
        EnumSet<VideoFieldEnum> videoFields = VideoFieldEnum.createEmptyEnumSet(); 
        videoFields.add(VideoFieldEnum.ID);
        videoFields.add(VideoFieldEnum.NAME);
        
        try {
            ItemCollection<Video> collection = api.findAllVideos(5, 0, true,
                SortByTypeEnum.PUBLISH_DATE, SortOrderTypeEnum.ASC, videoFields, null);
            collection.getTotalCount();
            System.out.println(collection);
        } catch(Exception e) {
            String msg = e.getMessage();
        }
       
    } 

この例のように、実際の BC Media API 呼び出しから返される例外を知ることは大切です。また、結果が NIL かどうかもチェックするとよいでしょう。探しているオブジェクトが見つからない場合(findVideoById を無効な動画 ID で呼び出しているなど)、結果は NIL となってエラーに「NULL」のメッセージが含まれます。

利用できないネットワークへの対処

アプリケーションはユーザー側で使用されているため、ネットワークの信頼性はいつでも変わる可能性があります。ユーザーのデバイスが Video Cloud サービスにアクセスできない場合、開発者がていねいに扱うべきエラーがエラーポインタに投入されます。

無効な動画の再生

非アクティブ化された動画、無効な動画、スケジュールの関係でアクティブでない動画、サポートされていないファイル タイプ(非 H.264)、あるいは不許可の状態の動画(メディア共有で共有された動画で起きる場合がある)を再生しようとすると、プレーヤ UI に真っ黒な画面がロードされます。これらの状態にある動画は再生しないでください。

ストリーミング動画の再生

ストリーミング動画を再生しようとすると、Android メディア プレーヤは「不明なエラー」という例外処理を実行します。RTMP および RTMPe プロトコルは Android メディア プレーヤでサポートされていません。ストリーミング コンテンツを HTTP 経由で再生するため、ユニバーサル デリバリ サービスを使用するよう Video Cloud アカウントを構成することをお勧めします。ご自身のアカウントでこのサービスを使い始めると、ReadAPI クラスで setMediaDeliveryType() メソッドを使い、引数 media_delivery=HTTP を追加して、すべての Media API 呼び出しを行うことができます。

その他のヒントとテクニック

他のアプリケーションからの通知 動画再生中にポップアップする他のアプリケーションからの通知を閉じると、再生が停止し、動画の再生位置は保存されません。これは Android メディア プレーヤの問題であり、これらのデバイスで使われるすべての動画アプリケーションで同様に起こる問題です。

向きBCPlayer で再生が始まると、最高の画像表示を得るために表示を横方向にロックしてください。

再生中にステータス バーを非表示にする:再生中に Android の画面上部のステータス バーを非表示にしたい場合、BCPlayerView を含む Activity に以下を記述します。

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	requestWindowFeature(Window.FEATURE_NO_TITLE);
	getWindow().setFlags(
			WindowManager.LayoutParams.FLAG_FULLSCREEN,
			WindowManager.LayoutParams.FLAG_FULLSCREEN);
	setContentView(<R.layout.id_of_layout_containing_BCPlayerView>  );

	...

地域制限なしBCMediaAPI オブジェクトがメディアの地域制限メタデータを返した場合でも、BCPlayer では地域制限はサポートされていません。

リージョン サポート初期設定では、Video Cloud Media API への呼び出しはすべて、api.brightcove.com に向けられますが、api.brightcove.co.jp に向けるよう設定することが可能です。これには、ReadAPI クラスで setRegion() メソッドを使用します。このメソッドは、US か JP のどちらかのリージョン列挙値を取ります。

エンコーディング高解像度での動画再生は、プレーヤにアーチファクトを起こす可能性があります。モバイル機器での再生には、低解像度でのエンコーディングをお勧めします。アプリケーションで再生したい許容可能なエンコーディング ビットレートの範囲を指定するには、BCPlayerView クラスの setRenditionBitRateRange() メソッド経由で、BCPlayer のこのプロパティを設定します。

フォーマット.flv などのサポートされていない動画形式を HTTP から再生しようとすると、エラー警告が表示されます。

タグ
Android, Droid, モバイル