/*
PhoneProfile.java
Copyright (c) 2014 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.profile;
import android.content.Intent;
import android.os.Bundle;
import org.deviceconnect.profile.PhoneProfileConstants;
/**
* Phone プロファイル.
*
* <p>
* 通話操作機能を提供するAPI.<br>
* 通話操作機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。 <br>
* </p>
*
* @deprecated
* swagger定義ファイルで定数を管理することになったので、このクラスは使用しないこととする。
* プロファイルを実装する際は本クラスではなく、{@link DConnectProfile} クラスを継承すること。
*
* @author NTT DOCOMO, INC.
*/
public abstract class PhoneProfile extends DConnectProfile implements PhoneProfileConstants {
@Override
public final String getProfileName() {
return PROFILE_NAME;
}
// ------------------------------------
// リクエストゲッターメソッド群
// ------------------------------------
/**
* リクエストから発信先の電話番号を取得する.
*
* @param request リクエストパラメータ
* @return 発信先の電話番号。無い場合はnullを返す。
*/
public static String getPhoneNumber(final Intent request) {
String value = request.getStringExtra(PARAM_PHONE_NUMBER);
return value;
}
/**
* リクエストから電話のモードを取得する.
*
* @param request リクエストパラメータ
* @return モード。無い場合は{@link org.deviceconnect.profile.PhoneProfileConstants.PhoneMode#UNKNOWN}を返す。
* <ul>
* <li>{@link org.deviceconnect.profile.PhoneProfileConstants.PhoneMode#SILENT}</li>
* <li>{@link org.deviceconnect.profile.PhoneProfileConstants.PhoneMode#MANNER}</li>
* <li>{@link org.deviceconnect.profile.PhoneProfileConstants.PhoneMode#SOUND}</li>
* <li>{@link org.deviceconnect.profile.PhoneProfileConstants.PhoneMode#UNKNOWN}</li>
* </ul>
*/
public static PhoneMode getMode(final Intent request) {
Integer value = parseInteger(request, PARAM_MODE);
if (value == null) {
value = PhoneMode.UNKNOWN.getValue();
}
PhoneMode mode = PhoneMode.getInstance(value);
return mode;
}
// ------------------------------------
// レスポンスセッターメソッド群
// ------------------------------------
/**
* レスポンスにイベントオブジェクトを設定する.
*
* @param response レスポンスパラメータ
* @param phoneStatus イベントオブジェクト
*/
public static void setPhoneStatus(final Intent response, final Bundle phoneStatus) {
response.putExtra(PARAM_PHONE_STATUS, phoneStatus);
}
/**
* レスポンスのphoneStatusイベントオブジェクトに通話状態を設定する.
*
* @param phoneStatus イベントオブジェクトのパラメータ
* @param state 通話状態
*/
public static void setState(final Bundle phoneStatus, final CallState state) {
if (state == CallState.UNKNOWN) {
throw new IllegalArgumentException("State should not be UNKNOWN.");
}
phoneStatus.putInt(PARAM_STATE, state.getValue());
}
/**
* レスポンスのphoneStatusイベントオブジェクトに発信先の電話番号を設定する.
*
* @param phoneStatus イベントオブジェクト
* @param phoneNumber 発信先の電話番号
*/
public static void setPhoneNumber(final Bundle phoneStatus, final String phoneNumber) {
phoneStatus.putString(PARAM_PHONE_NUMBER, phoneNumber);
}
}