/* DeviceTestService.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.test; import android.content.Intent; import android.os.Bundle; import org.deviceconnect.android.deviceplugin.test.profile.TestSystemProfile; import org.deviceconnect.android.deviceplugin.test.service.UnitTestService; import org.deviceconnect.android.message.DConnectMessageService; import org.deviceconnect.android.profile.SystemProfile; import org.deviceconnect.android.provider.FileManager; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.logging.Logger; /** * テスト用プロファイルを公開するためのサービス. * @author NTT DOCOMO, INC. */ public class UnitTestDeviceService extends DConnectMessageService { private static final String SERVICE_ID = "test_service_id"; private static final String DEVICE_NAME = "Test Success Device"; private static final String SERVICE_ID_SPECIAL_CHARACTERS = "!#$'()-~¥@[;+:*],._/=?&%^|`\"{}<>"; private static final String DEVICE_NAME_SPECIAL_CHARACTERS = "Test Service ID Special Characters"; /** ロガー. */ private Logger mLogger = Logger.getLogger("dconnect.dplugin.test"); private FileManager mFileManager; @Override public void onCreate() { super.onCreate(); mFileManager = new FileManager(this); // テスト用データ作成 createTestData(); getServiceProvider().addService(new UnitTestService(SERVICE_ID, DEVICE_NAME, getPluginSpec())); getServiceProvider().addService(new UnitTestService(SERVICE_ID_SPECIAL_CHARACTERS, DEVICE_NAME_SPECIAL_CHARACTERS, getPluginSpec())); } @Override public void onDestroy() { File file = new File(mFileManager.getBasePath(), "test.dat"); file.delete(); super.onDestroy(); } @Override public int onStartCommand(final Intent intent, final int flags, final int startId) { mLogger.info("onStartCommand: intent=" + intent); if (intent != null) { mLogger.info("onStartCommand: extras=" + toString(intent.getExtras())); } return super.onStartCommand(intent, flags, startId); } @Override protected SystemProfile getSystemProfile() { return new TestSystemProfile(); } /** * JSON文字列に変換する. * @param bundle Bundle * @return JSON String */ private String toString(final Bundle bundle) { StringBuilder sb = new StringBuilder(); sb.append("{"); for (Iterator<String> it = bundle.keySet().iterator(); it.hasNext();) { String key = it.next(); sb.append(key + ":" + bundle.get(key)); if (it.hasNext()) { sb.append(", "); } } sb.append("}"); return sb.toString(); } private void createTestData() { byte[] buf = new byte[1024]; Arrays.fill(buf, (byte) 0x01); FileOutputStream fos = null; try { File writeFile = new File(mFileManager.getBasePath(), "test.dat"); fos = new FileOutputStream(writeFile); for (int i = 0;i < 1024; i++) { fos.write(buf); } fos.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }