-
Notifications
You must be signed in to change notification settings - Fork 0
Android implement LobiRecSDK Cocos2d x

- Cocos2d-x 導入準備
- Cocos2d-x への導入
- プログラムの実装 - Lobi SDK初期化処理
- プログラムの実装 - 録画開始/終了
- プログラムの実装 - プレイ動画シェア画面
- プログラムの実装 - リプレイ動画一覧画面
- プログラムの実装 - 通知のハンドリング
- プログラムの実装 - カテゴリについて
- プログラムの実装 - メタ情報について
- FAQ
RecSDK導入に関してお困りのことがありましたら、 お気軽にお問い合わせください。 すべてのメールに回答いたします。
お問い合わせ先:info@lobi.co
- 初期設定では録画を無効にし、ユーザ操作によって有効・無効が切り替えられるようにしてください。
- 端末が録画機能に対応しているかを取得(後述の
bool LobiAndroidRec::isSupported()を利用)し、 対応しない場合はユーザが録画機能を有効にできないようにしてください。 - 端末が録画機能に対応しているかのフラグは保存せず、
常に
bool LobiAndroidRec::isSupported()を用いて取得してください。 - 動作確認端末の一覧
LobiRecSDKではAndroidアプリにゲーム実況録画機能を提供します。
- 対応OS: Android 4.1 またはそれ以降のバージョン
- 最小動作OS: Android 2.2(録画はできません)
- 対応Cocos2dx : 2.2.x, 3.x
- 動作確認端末 : 一覧
- 事前に用意いただくファイル・情報
- LobiRecSDK
- Client ID
LobiRecSDKはLobiSDKに含まれています。
以下のファイル群で構成されています。
- Android/LobiCore
- Android/LobiRec
Android/LobiRec/cocos2dx/java/各バージョン番号
-
Cocos2dxMusic.java(SimpleAudioEngine用) -
Cocos2dxSound.java(SimpleAudioEngine用) Cocos2dxRenderer.javaCocos2dxGLSurfaceView.java
Android/LobiRec/cocos2dx/cpp
LobiRec/LobiAndroidRec.cppLobiRec/LobiAndroidRec.hLobiInterface.cppLobiInterface.hAudioEngine/AudioEngine-inl.cppAudioEngine/AudioEngine-inl.hAudioEngine/LobiAudioEngine.cppAudioEngine/LobiAudioEngine.h
Lobi SDKを利用するには、クライアントIDを用意する必要があります。 クライアントIDは開発者向けページにて取得することができます。 詳しくはLobi SDK導入までのフローを参照してください。
http://www.cocos2d-x.org/downloadから取得したCocos2d-xに対して、
- v2.2.xの場合
<COCOS2DX_LIBRARY_ROOT>/cocos2dx/platform/android/java/src/org/cocos2dx/lib - v3.0の場合
<COCOS2DX_LIBRARY_ROOT>/cocos/2d/platform/android/java/src/org/cocos2dx/lib - v3.1以降の場合
<COCOS2DX_LIBRARY_ROOT>/cocos/platform/android/java/src/org/cocos2dx/lib
内の以下の4ファイル
-
Cocos2dxMusic.java(SimpleAudioEngine用) -
Cocos2dxSound.java(SimpleAudioEngine用) Cocos2dxRenderer.javaCocos2dxGLSurfaceView.java
を
Android/LobiRec/cocos2dx/java/Cocos2d-xのバージョン
内の同名4ファイルで上書きしてください。
なお、上記の上書き作業を行ったCocos2d-x v2.2のライブラリプロジェクトは、以下に同梱されています。
Android/cocos2d-x/platform/android/java
Eclipseに以下の4プロジェクトをインポートしてください。
- LobiCore
- LobiRec
- 上書き処理を行ったCococs2d-xライブラリプロジェクト
- ゲームのAndroidプロジェクト
ライブラリプロジェクトの参照関係は以下のように設定してください。
- ゲームのAndroidプロジェクト から Cocos2d-xライブラリプロジェクト へ
- Cocos2d-xライブラリプロジェクト から LobiRec へ
- LobiRec から LobiCore へ
参照関係を追加するには、
参照元プロジェクトのプロパティを開き、Android > Library > Reference > Add... から
参照先プロジェクトを選択してください。
Android/LobiRec/cocos2dx/cpp 内の以下の4ファイル
LobiRec/LobiAndroidRec.cppLobiRec/LobiAndroidRec.hLobiInterface.cppLobiInterface.h
を <COCOS2DX_PROJECT_ROOT>/Classes 以下に配置してください。
そして、
<COCOS2DX_PROJECT_ROOT>/proj.android/jni/Android.mk に以下を追記してください。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_SRC_FILES := hellocpp/main.cpp \
...
# LobiRecSDKで使用するために追加
LOCAL_SRC_FILES += ../../Classes/LobiRec/LobiAndroidRec.cpp ../../Classes/LobiInterface.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx)<COCOS2DX_PROJECT_ROOT>/proj.android/jni/Application.mk に以下を追記してください。
# ARMv7-A, x86向けにもビルドする
APP_ABI := armeabi armeabi-v7a x86Cocos2d-x 3.3以降のSimpleAudioEngine、AudioEngineによる音声に対応する場合、
<COCOS2DX_PROJECT_ROOT>/cocos2d/cocos/audio/androidディレクトリ内で、次を行ってください。
LobiAudioEngine.cppLobiAudioEngine.h
の2ファイルを、Android/LobiRec/cocos2dx/cpp/AudioEngine内の同名ファイルで上書きしてください。
Android/LobiRec/cocos2dx/cpp/AudioEngine内の以下の2ファイルを追加してください。
AudioEngine/LobiAudioEngine.cppAudioEngine/LobiAudioEngine.h
また、android.mk内のaudioengine_staticモジュールのLOCAL_SRC_FILESにLobiAueioEngine.cppを追加してください。
...
LOCAL_MODULE := audioengine_static
LOCAL_MODULE_FILENAME := libaudioengine
LOCAL_SRC_FILES := AudioEngine-inl.cpp \
../AudioEngine.cpp \
LobiAudioEngine.cpp
...ネイティブアプリに組み込む場合 と同様にして、AndroidManifest.xmlに必要な項目を追加してください。
- 録画機能のサポートチェック処理
- 録画開始処理
- 録画終了処理
- 状態の取得
クラス構成
-
LobiRec/LobiAndroidRec: LobiRecSDKのJavaメソッドをラップするクラス。編集する必要はありません。 -
LobiInterface:LobiAndroidRecを使うインタフェースクラス。サンプルとして実装してありますので、編集してお使いいただけます。ヘッダファイルLobiInterface.hはiOSと共通です。
録画機能がサポートされるかのチェックを行います。
NOTE サポートされていない端末でも、リプレイ動画一覧画面を開くことができます。
bool LobiAndroidRec::isSupported();録画機能をサポートするかどうかは、端末のスペックに依存します。 対応状況
本SDKは必要に応じて通信を行い、最新のサポート状況を反映します。
この反映処理はアプリ起動時に非同期で行われ、
反映処理が終了するまでは、この関数は常にfalseを返します。
ゲーム録画は任意のタイミングで行えます。録画の開始をする場合はLobiAndroidRec::startCapturing()を呼びます。
録画開始までに以下の録画設定を行うことができます。
-
LobiAndroidRec::setMicEnable(bool enabled)録画中のマイク入力可否を設定します。 -
LobiAndroidRec::setMicVolume(double volume)録画中のマイク入力ボリュームの大きさを設定します。(0.0以上。推奨2.0程度) -
LobiAndroidRec::setGameSoundVolume(double volume)録画中のゲームボリュームの大きさを設定します。(0.0 - 1.0) -
LobiAndroidRec::setCapturePerFrame(int frames)何フレームに1回キャプチャするかを設定します。より大きな値にすることで録画処理の負荷が小さくなります。 -
LobiAndroidRec::setLiveWipeStatus(LobiAndroidRec::LiveWipeStatus status)録画中に表示するワイプの状態を設定します。 -
LobiAndroidRec::setWipePosition(int x, int y)録画中に表示するワイプの位置を指定します。 -
LobiAndroidRec::setWipeSquareSize(int wipeSize)録画中に表示するワイプの大きさを指定します。
なお、上記以外のiOS版に実装されている機能は、現在Android版ではサポートされません。
ゲーム開始処理の実装例はLobiInterface::recStart()にあります。
用途に応じて書き換えてご利用ください。
組み込み例 :
#include "LobiInterface.h"
...
LobiInterface::recStart();
録画の終了をする場合はLobiAndroidRec::stopCapturing()を呼びます。
組み込み例 :
#include "LobiInterface.h"
...
LobiInterface::recStop();
-
bool LobiAndroidRec::hasMovie()未送信の録画ファイルがあるかどうかを返します。 -
bool LobiAndroidRec::isCapturing()録画中かどうかを返します。
組み込み例 :
#include "LobiInterface.h"
...
LobiInterface::presentShare();組み込み例 :
#include "LobiInterface.h"
...
LobiInterface::presentLobiPlay();LobiRecSDKでは以下のイベント発生時にBroadcast Intentの送信を行います。
適宜通知を受け取った際に処理してください。
-
com.kayac.lobi.libnakamap.rec.LobiRec.ACTION_MOVIE_CREATEDプレイ動画情報をサーバにPOSTした際に、Extraにcom.kayac.lobi.libnakamap.rec.LobiRec.EXTRA_MOVIE_CREATED_URLをキーとした、投稿動画情報を格納して通知する通知名称です。動画情報は以下のようなjson形式です。
{
"url": "https://play.lobi.co/video/hogehoge",
"videoId": "hogehoge"
}-
com.kayac.lobi.libnakamap.rec.LobiRec.ACTION_MOVIE_CREATED_ERRORプレイ動画情報をサーバにPOST中にエラーが発生した際に通知する通知名称です。 -
com.kayac.lobi.libnakamap.rec.LobiRec.ACTION_MOVIE_UPLOADEDプレイ動画ファイルをサーバにPOSTした際に通知する通知名称です。 -
com.kayac.lobi.libnakamap.rec.LobiRec.ACTION_MOVIE_UPLOADED_ERRORプレイ動画ファイルをサーバにPOST中にエラーが発生した際に通知する通知名称です。 -
com.kayac.lobi.libnakamap.rec.LobiRec.ACTION_FINISH_POST_VIDEO_ACTIVITYプレイ動画シェア画面(com.kayac.lobi.sdk.rec.activity.RecPostVideoActivity)を閉じた際に,EXTRA_FINISH_POST_VIDEO_ACTIVITY_TRY_POSTに投稿画面の状態・投稿を試みたかの情報を格納して通知する通知名称です。以下のようなjson形式で格納されます。
{
// 動画投稿を試みたかどうか (1:true / 0:false)
"try_post": 1,
// 各SNSシェアがONになっていたかどうか (1:true / 0:false)
"twitter_share": 1,
"facebook_share": 0,
"youtube_share": 0,
"nicovideo_share": 0
}
動画のカテゴリ機能を使うと、ゲーム側で定義したカテゴリを使って動画を整理することができます。
たとえば、ゲームに登場するステージをカテゴリとして使えば、
- play.lobi.coでの動画詳細で、ステージ名を表示したり、
- ステージごとの動画のページを作成したりできます。(例:「姫ヒャク」の「1-1 はじまりの戦い」の動画一覧)
カテゴリを設定するには、まずデベロッパーサイトから、「REC機能」の「カテゴリ追加」を選んでください。このページでカテゴリ名・カテゴリID・スコアの設定などを入力して、カテゴリを定義できます。
カテゴリ名がplay.lobi.coで表示される名前、カテゴリIDが動画投稿時に指定するもの(LobiAndroidRec.presentLobiPostWithTitleの第4引数)になります。
またステージが大量にあるゲームの場合は、このカテゴリ追加を1つずつ行うのも難しいと思いますので、カテゴリのデータをCSVにしてまとめて流し込む機能も用意しています。(デベロッパーサイトの「REC機能」→「REC カテゴリ CSV取り込み」)
プレイ動画投稿の際、プレイ時のさまざまな情報を付与して、検索に使うことができます。
詳しくは、Lobi Rec 動画メタ情報機能についてをご覧ください。
apkを作成しようとした際に以下のエラーが発生する
[xxxx-xx-xx xx:xx:xx - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
[xxxx-xx-xx xx:xx:xx - xxxxxxxxxx] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
android-support-v4.jarが重複しています。
Android/LobiCore/libs/android-support-v4.jarを削除後、再度apkを作成してください
ビルド後にLobiRec関連のActivityへ遷移すると強制終了する場合は、重複していたandroid-support-v4.jarが古いことが考えられます。
android-support-v4.jarを最新のものにアップデートしてください。
http://developer.android.com/tools/support-library/setup.html
apkを作成しようとした際に以下のエラーが発生する
trouble writing output: Too many method references: xxxxx; max is 65536.
You may try using --multi-dex option.
References by package:
Javaメソッド数が制限をオーバーしています。
Ranking機能を用いない場合、 LobiRanking は不要ですのでEclipseにインポートしないでください。
その他にも用いていないライブラリがある場合は削除してください。
それでも関数の数がオーバーしてしまう場合、LobiRecのライブラリファイルの一部を削除してください。
LobiRec/libs にある以下の2ファイルが削除できます。
aspectjrt-1.7.3.jarisoparser-1.0.2.jar
(削除する場合は、 LobiAndroidRec.h の setStickyRecording(bool) という関数は用いないでください)
よくある質問をご覧ください。
はい。ただし、SEのPitch、Pan、Gainには未対応です。
ワイプ機能は次のようにして切り替えられます。
-
LobiAndroidRec::setLiveWipeStatus(LobiAndroidRec::LIVE_WIPE_STATUS_NONE);ワイプを無効にする。 -
LobiAndroidRec::setLiveWipeStatus(LobiAndroidRec::LIVE_WIPE_STATUS_IN_CAMERA);フロントカメラの映像を表示するワイプを有効にする。 -
LobiAndroidRec::setLiveWipeStatus(LobiAndroidRec::LIVE_WIPE_STATUS_ICON);Rec SDKのユーザーのアイコンを表示するワイプを有効にする。
フロントカメラを用いたワイプ機能がサポートされており(LobiAndroidRec::isFaceCaptureSupported()がtrue)、カメラ映像を使用したワイプを有効にしているにも関わらず、アイコンのワイプが表示される場合、アプリがフロントカメラの取得に失敗していることが考えられます。