package com.garlicg.cutinlib;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
/**
* Call cutinservice.
*/
public class Demo {
private Intent mCutinIntent;
private Context mContext;
public Demo(Context context){
mContext = context;
}
/**
* Play cutin service. If there are playing cutin , stop it and new cutin service start.
*/
public ComponentName play(Intent intent) {
forceStop();
mCutinIntent = intent;
return mContext.startService(intent);
}
/**
* 表示するカットインのクラスを指定してデモ再生します。
*/
public ComponentName play(Class<? extends CutinService> serviceClass) {
Intent intent = new Intent(mContext , serviceClass);
return play(intent);
}
/**
* カットインアイテムを指定してデモ再生をします。
* @see CutinService.EXTRA_CUTIN_ID
*/
public ComponentName play(CutinItem item) {
return play(item.serviceClass, item.cutinId);
}
/**
* カットインマネージャーに登録できる任意のIDを指定してデモ再生します。
* @see CutinService.EXTRA_CUTIN_ID
*/
public ComponentName play(Class<? extends CutinService> serviceClass , long cutinId) {
Intent intent = new Intent(mContext,serviceClass);
intent.putExtra(CutinService.EXTRA_CUTIN_ID, cutinId);
return play(intent);
}
/**
* カットインマネージャーからのイベント呼び出しに応じたデモ再生をします。
* @see CutinService.EXTRA_CUTIN_ID
*/
public ComponentName play(Class<? extends CutinService> serviceClass ,int triggerId){
Intent intent = new Intent(mContext,serviceClass);
intent.putExtra(CutinService.EXTRA_TRIGGER_ID, triggerId);
return play(intent);
}
/**
* カットインマネージャーからの通知呼び出しに応じたデモ再生をします。
* @see CutinService.EXTRA_NOTIFICATION_PACKAGE_NAME
* @see CutinService.EXTRA_NOTIFICATION_TICKER
*/
public ComponentName play(Class<? extends CutinService> serviceClass , String notifyPackageName ,String ticker){
Intent intent = new Intent(mContext,serviceClass);
intent.putExtra(CutinService.EXTRA_TRIGGER_ID, CutinService.TRIGGER_ID_NOTIFICATION);
intent.putExtra(CutinService.EXTRA_NOTIFICATION_PACKAGE_NAME,notifyPackageName);
intent.putExtra(CutinService.EXTRA_NOTIFICATION_TICKER,ticker);
return play(intent);
}
/**
* 再生中のカットインが存在する場合は停止します。
*/
public boolean forceStop(){
boolean isStop = false;
if(mCutinIntent != null){
try{
isStop = mContext.stopService(mCutinIntent);
}catch(SecurityException e){
}
}
mCutinIntent = null;
return isStop;
}
}