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 から再生しようとすると、エラー警告が表示されます。