/* CanvasProfile.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 org.deviceconnect.profile.CanvasProfileConstants; /** * Canvas プロファイル. * * <p> * スマートデバイスに対してのキャンバス操作機能を提供するAPI. * </p> * * @deprecated * swagger定義ファイルで定数を管理することになったので、このクラスは使用しないこととする。 * プロファイルを実装する際は本クラスではなく、{@link DConnectProfile} クラスを継承すること。 * * @author NTT DOCOMO, INC. */ public abstract class CanvasProfile extends DConnectProfile implements CanvasProfileConstants { @Override public final String getProfileName() { return PROFILE_NAME; } @Override public boolean onRequest(final Intent request, final Intent response) { String uri = request.getStringExtra(PARAM_URI); if (uri != null) { if (uri.startsWith("content://")) { byte[] data = getContentData(uri); request.putExtra(PARAM_DATA, data); request.removeExtra(PARAM_URI); } } return super.onRequest(request, response); } // ------------------------------------ // セッターメソッド群 // ------------------------------------ /** * メッセージににファイルのMIMEタイプを設定する. * * @param response メッセージ * @param mimeType MIMEタイプ */ public static void setMIMEType(final Intent response, final String mimeType) { response.putExtra(PARAM_MIME_TYPE, mimeType); } /** * レスポンスにファイルデータ一覧を設定する. * * @param response レスポンスパラメータ * @param data 画像ファイルのバイナリ */ public static void setData(final Intent response, final Byte[] data) { response.putExtra(PARAM_DATA, data); } /** * レスポンスにX座標を設定する. * * @param response レスポンスパラメータ * @param x X座標 */ public static void setX(final Intent response, final double x) { response.putExtra(PARAM_X, x); } /** * レスポンスにY座標を設定する. * * @param response レスポンスパラメータ * @param y Y座標 */ public static void setY(final Intent response, final double y) { response.putExtra(PARAM_Y, y); } /** * レスポンスに画像描画モードを設定する. * * @param response レスポンスパラメータ * @param mode 画像描画モード */ public static void setY(final Intent response, final String mode) { response.putExtra(PARAM_MODE, mode); } // ------------------------------------ // ゲッターメソッド群 // ------------------------------------ /** * リクエストからファイルのMIMEタイプを取得する. * * @param request リクエストパラメータ * @return ファイルのMIMEタイプ。無い場合はnullを返す。 */ public static String getMIMEType(final Intent request) { return request.getStringExtra(PARAM_MIME_TYPE); } /** * リクエストから画像ファイルのURIを取得する. * * @param request リクエストパラメータ * @return 画像ファイルのURI。無い場合はnullを返す。 */ public static String getURI(final Intent request) { return request.getStringExtra(PARAM_URI); } /** * リクエストから画像ファイルのバイナリを取得する. * * @param request リクエストパラメータ * @return 画像ファイルのバイナリ。無い場合はnullを返す。 */ public static byte[] getData(final Intent request) { return request.getByteArrayExtra(PARAM_DATA); } /** * リクエストからX座標を取得する. * * @param request リクエストパラメータ * @return X座標。無い場合は0.0を返す。 */ public static double getX(final Intent request) { Double x = parseDouble(request, PARAM_X); if (x == null) { x = 0.0; } return x; } /** * リクエストからY座標を取得する. * * @param request リクエストパラメータ * @return Y座標。無い場合は0.0を返す。 */ public static double getY(final Intent request) { Double y = parseDouble(request, PARAM_Y); if (y == null) { y = 0.0; } return y; } /** * リクエストから画像描画モードを取得する. * * @param request リクエストパラメータ * @return 画像描画モード。無い場合はnullを返す。 */ public static String getMode(final Intent request) { return request.getStringExtra(PARAM_MODE); } /** * check MimeType format. * * @param mimeType MimeType * @return true: OK / false: ERROR */ protected boolean checkMimeTypeFormat(final String mimeType) { final String pattern = "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$"; return mimeType.matches(pattern); } /** * check x value format. * * @param request request * @return true: check OK or nothing / false: check ERROR */ protected boolean checkXFormat(final Intent request) { if (request.getStringExtra(PARAM_X) != null) { return parseDouble(request, PARAM_X) != null; } else { // nothing. return true; } } /** * check y value format. * * @param request request * @return true: check OK or nothing / false: check ERROR */ protected boolean checkYFormat(final Intent request) { if (request.getStringExtra(PARAM_Y) != null) { return parseDouble(request, PARAM_Y) != null; } else { // nothing. return true; } } }