ãã®ãããªã¢ã¯ã»ãµãªã¯ããŠãŒã¶ãŒãå€æ°ã®ã¬ãã¥ãŒãè¡ãã ãã§ãªããã¢ãã€ã«éçºè ããããã®ã¯ãŒã«ãªæ©èœã䜿çšããéæšæºã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããšãä¿ããŸãã ã¡ãŒã«ãŒïŒHTCïŒã®æšæºçãªDot Viewæ©èœã»ããã¯éåžžã«è±å¯ã§ãããã©ãã¯ã¹ã¯ããŒã«æ©èœãåãã䟿å©ãªãã¬ãŒã€ãŒãã±ãŒã¹ã®ããã€ã³ãã«ãããŸããŸãªéç¥ã®åºåãããã³ãããã°ãã¯ã»ã«ããåããéå»ã®ã8ãããæ代ããé£æ³ãããã·ã³ãã«ãªã²ãŒã ã§ãããããŸãã ããããå¯äžã®åé¡ã¯ãå ¬åŒéçºè ã䜿çšããAPIã ãã§ãªããDot Viewã®çºæ¡ã®ä»çµã¿ã«é¢ããããããªæ瀺ãããæäŸããªãã£ãããšã§ãã ããã¯ãæ奜家ãã±ãŒã¹ãããã€ã¹ãšãã¢ãªã³ã°ããããã®ã¡ã«ããºã ãããã³èª¿æ»ããç 究è ãç¬ç«ããŠç解ããªããã°ãªããªããšããäºå®ã«ã€ãªãããŸããã
ãã®ãããã¯ã§ã¯ãHTCã®ãã®éæ³ã®ã«ããŒãã©ã®ããã«æ©èœããããç解ããããšããŸãã
ããã¯äžã€ã®å€§ããªé°è¬ã§ãïŒïŒ
ãã§ã«äžã§è¿°ã¹ãããã«ããã®ã±ãŒã¹ã¯ãã®ããã€ã¹å°çšã®å ¬åŒã¡ãŒã«ãŒã«ãã£ãŠãªãªãŒã¹ãããŸããã
ã±ãŒã¹ã¯ãåãä»ããããç£ç³ãå éšæ©åšãšçžäºäœçšããããã«èšèšãããŠãããé»è©±æ©ãã±ãŒã¹ãè£ çããŠããããšãç解ã§ããŸãããã®ã±ãŒã¹ã¯ããããã¥ãŒã§ãã ãããŠãç£ç³èªäœã¯ãHTCããŒãã³ã°ã®ããäžã«ãããŸãã
ããã€ã¹ã®ã«ããŒãè£ çãããšãã·ã¹ãã ã§èµ·åããããµãŒãã¹ãã«ããŒãšããåããéå§ããããã€ã¹ã®é»åæ¶è²»ïŒç¶æ ïŒå¶åŸ¡ã¢ãŒããã€ã³ã¿ãŒã»ããããå ¬åŒã¡ãŒã«ãŒãããç¹å®ã®ãã¢ã¯ãã£ããã£ãèµ·åããŸãã ã€ãŸããã¢ãã€ã«ããã€ã¹ã¯ããœãããŠã§ã¢ã¬ãã«ãšããŒããŠã§ã¢ã¬ãã«ã®äž¡æ¹ã§ãã®ã±ãŒã¹ãšãã¢ã«ãªããŸãã ããã§ããå°ã詳现ãªã¬ãã¥ãŒãèŠã€ããããšãã§ããŸã ã
APIãååšããªãå Žåã¯ã©ããªããŸããïŒ
æåã«è³ªåããªããã°ãªããªãã®ã¯ããã®ãããªè³ªåã§ãã...å®éããã®ãããªãŠããŒã¯ãªã¢ã¯ã»ãµãªã«ã€ããŠã¯ããµãŒãããŒãã£ã®éçºè åãã«APIããªãªãŒã¹ãããŠããªããšã¯ä¿¡ããããŸããã§ããã ãããã¯ãŒã¯ãæ€çŽ¢ããããã»ã¹ã§ã¯ãã«ã¹ã¿ã Xposedãã¬ãŒã ã¯ãŒã¯çšã®Dot View ã¢ãžã¥ãŒã«ã®å®è£ ãªã©ãäœããã®åœ¢ã§é¢é£ããåé¡ãããã€ããããŸããããå®éã«ããã·ã¥ããŠãæçµçã«ç¬èªã®ã¢ããªã±ãŒã·ã§ã³ã§Dot Viewã®æ©èœã䜿çšã§ãããã®ã¯ãããŸããã§ããã ãããã£ãŠãç§ã¯èªåã®èª¿æ»ãå§ããªããã°ãªããŸããã§ããã
çå®ãç解ããããã®æåã®ã¹ãããã¯ãã·ã¹ãã å ã®ç¹å®ã®Dot Viewã³ã³ããŒãã³ãã®ååšãæ£ç¢ºã«ç€ºããœãŒã¹ãããlogcatã調ã¹ãããšã§ããã
W/SensorService( 870): Listener[0] = com.htc.dotmatrix.CoverService$7@24541961 W/SensorService( 870): Listener[1] = com.htc.dotmatrix.CoverService$7@6b8ab5b W/SensorService( 870): Listener[2] = com.htc.dotmatrix.CoverService$7@f1d0b5a ... D/DotMatrix( 1287): [CoverService] resetCoverViewState, poleN: false, state: true D/DotMatrix( 1287): [CoverService] updateCoverState, (sticky)poleN: false, state: true D/DotMatrix( 1287): [CoverService] updateCoverState, (intent)poleN: false, state: false D/DotMatrix( 1287): [CoverService] updateCoverState, removeMessages EVENT_COVER_CLOSED D/DotMatrix( 1287): [CoverService] show cover D/DotMatrix( 1287): [DotImage] init com.htc.dotmatrix.ui.BackgroundImage D/DotMatrix( 1287): [DotImage] init com.htc.dotmatrix.ui.TemperatureImage D/DotMatrix( 1287): [DotImage] init com.htc.dotmatrix.ui.LastCallImage
æåã«æãã€ããã®ã¯ãlogcatã®æãèå³æ·±ããã°ããã®ã¢ããªã±ãŒã·ã§ã³ã®ããã±ãŒãžåãåç §ããŠãããããå ¬åŒã®HTC Dot Viewã¢ããªã±ãŒã·ã§ã³ã®APKãéã³ã³ãã€ã«ãããšããã¢ã€ãã¢ã§ããã ããããæçµçã«ã¯ãã«ããŒã®ã³ãŒããèšè¿°ããããã®æçšãªæ å ±ãæœåºããããšã¯ã§ããŸããã§ããããã ãããããŒããã£ã¹ãã¬ã·ãŒããŒã§äœ¿çšãããã«ããŒã«ããŒã®ç¶æ ã远跡ããããã«èšèšãããç¹å®ã®æå³ã¢ã¯ã·ã§ã³ïŒãªãŒãã³ãŸãã¯ã¯ããŒãºïŒã¯äŸå€ã§ãã
äžçªäžã«å°éããããšããŠå€±æããåŸãç§ã¯å¶ç¶ãããããã¥ãŒã®å ¬åŒHTCã¢ããªã±ãŒã·ã§ã³ã®ãã¢ããªã±ãŒã·ã§ã³ãã»ã¯ã·ã§ã³ãå¶ç¶èŠã€ããŸããã
ãã®åŸãéåžžã®Androidã¢ããªã±ãŒã·ã§ã³ãäžè¬çãªDot Viewã¢ããªã±ãŒã·ã§ã³ãšã©ã®ããã«ç°ãªãããèå³æ·±ããã®ã«ãªããŸããã ã€ãŸããåé¢ã¯ã©ã®ã¬ãã«ã§ããïŒ Google Playã§ä»ã®ã¢ããªã±ãŒã·ã§ã³ãæ€çŽ¢ããåŸããããªãã¯ãããã¯ã¢ãŠããããã²ãŒã ã§ããDot Breakerã®å®è£ ã«å°éããŸããã ãã¡ãããä»ã®çãšåãããã«ãããã¯å ¬åŒã¡ãŒã«ãŒã®ãã®ã§ããã
Dot Breakerã¢ããªã±ãŒã·ã§ã³ã®ãããã§ãDot Viewã®ãã¹ãŠã®è©³çŽ°ã調ã¹ãŠãã±ãŒã¹çšã®ç¬èªã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸããã
ãšãã»ã³ã¹ãæ€çŽ¢...
ã¢ããªã±ãŒã·ã§ã³ã®æåã®éã³ã³ãã€ã«åŸã ã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ã ïŒAndroidManifest.xmlïŒã調ã¹ãããšãå¯èœã«ãªããŸããã
ãã®ãããã§ã¹ãã¯ãå ¬åŒã®HTC Dot Viewã¢ããªã®ãããã§ã¹ããšã¯ããŸã䌌ãŠããŸããã§ããã ç§ãæåã«ç®ãåŒããã®ã¯ãæš©éã®ãã·ãŒãããäžè¶³ããŠããããšã§ãã
<uses-permission android:name="android.permission.GET_TASKS"/> <uses-permission android:name="com.htc.permission.dotviewgame"/>
çµå±ãå°ãªããšãã¢ããªã±ãŒã·ã§ã³ã¯ããã€ã¹ã®ç¶æ ãå¶åŸ¡ããŸããã ãŸããGET_TASKSæš©éã¯äžè¬çã«å»æ¢ãããŸãã ãããã£ãŠã次ã®è§£æ±ºçãæ倧ã®é¢å¿äºã§ããã 圌ã®ååããããããéæšæºã§ããããšã¯æããã§ãã
ã¢ããªã±ãŒã·ã§ã³ããã¢ããªã±ãŒã·ã§ã³ãã®åããªã¹ãã«è¡šç€ºãããããã«ãã責任ãããå¥ã®èšèšãã€ã³ãã¯æ¬¡ã®ãšããã§ãã
... <activity android:name=".WelcomePageActivity" android:screenOrientation="portrait" > <intent-filter> <action android:name="com.htc.intent.action.dotviewgame_launch"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> ...
倧ãŸãã«èšã£ãŠããã®ã«ã¹ã¿ã ã¢ã¯ã·ã§ã³ã¯ãandroid.intent.category.LAUNCHERãã®ãããªãã®ã§ã ãcom.htc.intent.action.dotviewgame_launchãã®ã¿ã§ãã
ãŸããã¢ã»ããïŒã¢ã»ããïŒã«ã¯ãã²ãŒã ã«ååšãããã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ãåéãããŸããã
...ãããŠå°æ¥çã«ã¯ãã«ããŒã®ããã€ã³ãã«ãæç»ããããšã¯éåžžã«æšæºçãªäœæ¥ã§ã¯ãªãããããã®çç±ãæããã«ãªããŸãã
ããã«ç¶ããŠãã¢ããªã±ãŒã·ã§ã³ã®éã³ã³ãã€ã«ãããJavaã³ãŒããçŽæ¥åæããããšãç®çãšãã2次éã³ã³ãã€ã«ãè¡ãããŸããã ïŒéã³ã³ãã€ã«ãããã³ãŒãã¯ãBitBucketãªããžããªã§æäŸãããŸã ãïŒ
äžèšã®ãããã§ã¹ãã«åºã¥ããŠã WelcomePageActivityã Dot Breaker ã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªã¢ã¯ãã£ããã£ã§ãããšçµè«ä»ããããšãã§ããŸã ã 圌女ãè¡ãå¯äžã®ããšã¯ã2ç§éç¶ãåæã¢ãã¡ãŒã·ã§ã³ïŒããããã¥ãŒãšã¯é¢ä¿ãããŸããïŒã衚瀺ããã¬ãã«ãéžæããGameLevelã¢ã¯ãã£ããã£ãéå§ããããšã§ãã
... this.mCountDownTimer = new CountDownTimer(2000L, 2000L) { public void onFinish() { WelcomePageActivity.this.finish(); WelcomePageActivity.this.startActivity(new Intent(WelcomePageActivity.this, GameLevel.class)); } } .start(); ...
ã¢ã¯ãã£ããã£GameLevelã§ã¯ãã¬ãã«ãéžæã§ããŸãã 埩å ãããJavaã³ãŒãã§ã¯ã20ã®ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ãã¹ãŠã®åæåã®ãã·ãŒãããèŠãããšãã§ããŸãã åãã¥ãŒãã¯ãªãã¯ãããšãã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªã¢ã¯ãã£ããã£ã§ããGameActivityãåŒã³åºã次ã®ã³ãŒããå«ãAlertDialogããããã¢ãã衚瀺ãããŸãã
... localBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) { GameLevel.this.startActivity(new Intent(GameLevel.this, GameActivity.class)); } }); ...
ãã®ã³ãŒãã¯ãæåŸã®ããã³ãã£ã¢ãã§ãããæçµçã«HTC Dot Viewã³ã³ã»ãããå®è£ ããããã®å éšã¡ã«ããºã ãç¶ããŸãã
ãã®ããããã¥ãŒã¯ã©ã®ããã«æ©èœããŸããïŒ
Dot Viewãšã®å¯Ÿè©±ãµã€ã¯ã«ã®äžéã§ããGameActivityã®äž»èŠãªã¢ã¯ãã£ããã£ã¯ãç¹å¥ãªãã®ã«ãã£ãŠåºå¥ãããŸãã-ä»ã®ã¢ã¯ãã£ããã£ã®ããã«ã Activityã¯ã©ã¹ããç¶æ¿ãããŸãã ã€ãŸãã察話ã¯onCreateã¡ãœããããå§ãŸããŸãã ãã®GameActivityã¢ã¯ãã£ããã£ã¡ãœããã®ã³ãŒãã«ã¯ããŠã£ã³ããŠã®æ§æãšã¹ã¿ã€ãªã³ã°ïŒãã«ã¹ã¯ãªãŒã³ãæãããªã©ïŒãæ åœããå€ãã®åŒã³åºãããããã¡ãœããã®æåŸã«ããŒåŒã³åºããç¶ããŸãã
... this.mDotViewCommunity.bindDotViewService();
ããã§ã this.mDotViewCommunityã¯ã©ãããŒã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ããããã¯åçŽãªæœè±¡åã§ãããã¢ã¯ãã£ããã£ã¯ã©ã¹ïŒGameActivityïŒå ã«ãã¹ããããã¯ã©ã¹ãšããŠå®è£ ãããŸãã ãã®ã¯ã©ã¹ã¯éèŠãªåœ¹å²ãæãããªããããç¡èŠã§ããŸãã
ããããéèŠãªåœ¹å²ã¯ããã®ã¯ã©ã¹ã«å«ãŸãããbindDotViewServiceããšããååã®å«ã³å£°ã§ããããã¡ãœããã«ãã£ãŠæããããŸãã ãã®æ®µéã§ã¯ãããããããã»ã¹ééä¿¡ïŒIPCïŒã®ç®çã®ããã«ãç¹å®ã®ãµãŒãã¹ãšã®æ¥ç¶ããããšæ³å®ã§ããŸãã
bindDotViewServiceã¡ãœããã®ããŒã³ãŒãã¯æ¬¡ã®ãšããã§ãã
... DotViewSericeConnection mServiceConnect = new DotViewSericeConnection(); ... Intent localIntent = new Intent(); localIntent.setClassName("com.htc.dotmatrix", "com.htc.dotmatrix.GameService"); bool3 = GameActivity.this.bindService(localIntent, this.mServiceConnect, 1); ...
ã芧ã®ãšãããDot Viewã«ã¹ã¿ã ãµãŒãã¹ãšã®ãªã³ã¯ã¯ãããã«ãµãŒãã¹ãšå¯Ÿè©±ããããã«å®éã«è¡ãããŠããŸãã ãµãŒãã¹ã¯ã©ã¹ã®ååã¯com.htc.dotmatrix.GameService㧠ããã®ãµãŒãã¹ãå±ããããã±ãŒãžïŒã¢ããªã±ãŒã·ã§ã³ïŒ ã¯éåžžã«å ¬åŒãªHTC Dot Viewã¢ããªã±ãŒã·ã§ã³ã§ãã DotViewSericeConnectionã¯ããµãŒãã¹ã®ç¶æ ãç£èŠããããã®æšæºã®Android ServiceConnectionã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£ ã§ããã«ã¹ã¿ã ããããã¬ãŒã«ãŒã¯ã©ã¹ã§ãã DotViewSericeConnectionã¯ã©ã¹ã¯ ãã¢ã¯ãã£ããã£ã¯ã©ã¹ã«ãã¹ããããã¯ã©ã¹ãšããŠãå®è£ ãããŸãã
ããŠãããã¯ããããäºæ³ãããçµæã§ãããHTCã®ãµãŒãã¹ã«æ¥ç¶ããåŸãDot Breakerã²ãŒã ã®çžäºäœçšã¯ã©ã®ããã«å±éããŸããïŒ
ServiceConnectionã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ããªãŒããŒã©ã€ããããonServiceConnectedïŒïŒã¡ãœãããå¿ èŠã§ãããã®ã¡ãœããã¯ããµãŒãã¹ãæ£åžžã«ãã¢ãªã³ã°ãããå Žåã«åŒã³åºãããŸãã
ãµãŒãã¹ãžã®æ¥ç¶ãæåããå Žåãã³ãŒããåŒã³åºãããŸããã³ãŒãã®å®è¡ã¯ãDot Viewã䜿çšããããã®2ã€ã®ã¹ãããã®ãã¡ã®æåã®ã¹ãããã§ãã
public void onServiceConnected(ComponentName paramComponentName, IBinder paramIBinder) { GameActivity.DotViewCommunity.this.mService = new Messenger(paramIBinder); try { Message localMessage = Message.obtain(null, 1); localMessage.replyTo = GameActivity.this.mMessenger; Bundle localBundle = new Bundle(); // , "" Dot View localBundle.putString("activityName", GameActivity.class.getName()); localMessage.setData(localBundle); // GameActivity.this.mService.send(localMessage); return; } catch (RemoteException localRemoteException){ ... } }
ããã§ã¯ãAndroidã®ã³ã³ããã¹ãã§ãªã¢ãŒããµãŒãã¹ãšã®ããªãæšæºçãªã¯ã©ã€ã¢ã³ããµãŒããŒãéä¿¡ãã芳å¯ã§ããŸãã
what-cââode = 1ã®ã¡ãã»ãŒãžãã°ããŒãã«ããŒã«ããååŸãããŸãã
ãããŠãã¢ã¯ãã£ããã£ã¯ã©ã¹ã®æåã«ã次ã®å®æ°ã»ããããããŸãã
static final int MSG_DOTVIEW_CLIENT_PAUSE = 4; static final int MSG_DOTVIEW_CLIENT_REGISTER = 1; static final int MSG_DOTVIEW_CLIENT_RESUME = 3; static final int MSG_DOTVIEW_CLIENT_UNREGISTER = 2;
ããã¯ããã®ã¡ãœããã®ã³ãŒããã¢ã¯ãã£ããã£ãæ°ããæœåšçãªãŠãŒã¶ãŒãšããŠç»é²ããããšãæå³ããŸãã
次ã«ãåæ§ã®ã³ãŒããåŒã³åºãããŸãããwhat-cââode "3" -MSG_DOTVIEW_CLIENT_RESUMEã䜿çšãããŸãã
ãã®çŽåŸã«ãDot Viewã¯ãç¹å®ã®ã¢ã¯ãã£ããã£ã®èã®ã¹ã©ãã³ã°ãžã®å¿çãåæ¢ãããããå¿ èŠãšããã¢ã¯ãã£ããã£ãã€ãŸãGameActivityã®Dot-Viewç»é¢ã¬ã³ããªã³ã°ãæäŸããŸãã
ããŠããµãŒãã¹ãšã®æ¥ç¶ãšéä¿¡ã¯ã©ãã§ããïŒ
com.htc.dotmatrix.GameServiceãµãŒãã¹ã«ã¢ã¯ãã£ããã£ããç¬èªã®æ¹æ³ã§ãã«ããŒã䜿çšãã䜿çšããæºåãã§ããããšãéç¥ãããåŸãã«ããŒãéé£ããããšãç»é¢ã¯æ¶ããŸããïŒæåã¯ããããã¥ãŒæ©èœãæ©èœããªããªã£ãããã§ãïŒããã衚瀺ã¢ãŒããããã£ããã£ãããã¢ã¯ãã£ããã£ã®ããŒã¯ã¢ããã衚瀺ããŸãã ç»é¢ã空çœã«ãªã£ãå Žåãã¹ãã©ãã·ã¥ç»é¢ã®ä»£ããã«ããã«ã¿ããïŒããããã¥ãŒããèµ·åãããæšæºçãªæ¹æ³ïŒåŸãåã³ãã¢ã¯ãã£ããã£ã€ã³ããŒããŒãã®ããŒã¯ã衚瀺ãããŸãã
åæã«ãã¢ã¯ãã£ããã£ã¯ã»ãŒæšæºçã«æ©èœããŸãããã¿ã³ã眮ãããšãã§ãããã®onclicksãæ©èœããæšæºã®Android ãžã§ã¹ãã£æ€åºåšã䜿çšã§ããŸãããã¹ãŠæ£åžžã«æ©èœããŸãã
ãããããã®åŸãå°é£ã¯äœã§ããïŒ
ã©ããããããæåã¯ãããããã¬ãŒã«ãŒã¯ãã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ãåçã«ä¿åãããšèšãããŠããŸããã äž»ãªçç±ã®1ã€ïŒãã ããã»ãšãã©éèŠã§ã¯ãªãïŒã¯ãããããã¥ãŒãã€ã³ãã§ã®ã¬ã³ããªã³ã°ã®ç¹ç°æ§ã§ãã å ¬åŒã®ã¢ããªã±ãŒã·ã§ã³ãæšæºã®Androidã䜿çšããªãçç±ã¯ãããããåã«è¡šç€ºãããªãããã§ãã æšæºãã©ã³ãã®ãã¿ã³ã¯ããã¿ã³ã®ããã«ã¯èŠããŸãããããããæŒãããšãã§ããäœãããã«ããŒã®äžãã§çºçããããã¥ãŒã®åœ¢ãããã¹ãããã®ãããªãã®ã§ãã ãã¿ã³ãšããã¹ãã®ãµã€ãºã倧ããã§ããããã«èŠããŸããããã¹ãŠãèŠèŠçã«èªã¿ããããªããŸãããããã«ä¿¡é Œæ§ã®é«ãã¢ãããŒããå¿ èŠã§ãã
Dot Breakerã¢ããªã±ãŒã·ã§ã³ã®BrickViewã¯ã©ã¹å ã«ã¯ãç»é¢ãã¯ã»ã«ãDotViewãã¯ã»ã«ã«å€æããæ¹æ³ã䞊ã¹æ¿ããããŠããŸãïŒäžéšãæ£ç¢ºãªéã³ã³ãã€ã«ãè¡ãããªããããããžãã¯ãç解ã§ããªãå ŽåããããŸãïŒã ããã¯ééããªãäžèŠã®äŸ¡å€ããããŸãã ã·ã³ãã«ã§ãããããŸãæ£ç¢ºã§ã¯ãªãæ¹æ³ããããŸã-ã±ãŒã¹ã®ãã€ã³ãæ°ãèšç®ããã«ã¯ïŒ
ãã®çµæãXã«27åãYã«48åã®éã¿ã®ãããã€ã³ããç²åŸããŸããããéã¿ãä»ãããããšã«ãããããã€ã¹ã®ãã£ã¹ãã¬ã€ã«éããããDotViewãã€ã³ããç解ããå¿ èŠããããŸãã ãã®ãããªæ å ±ã䜿çšãããšãå¿ èŠãªã¹ã±ãŒãªã³ã°ãçæããã¡ãœãããç°¡åã«äœæã§ããŸãã
å®äºïŒ1ã
äžèšã®è³æã¯ãã¹ãŠãå®çšçãªå®è£ ã®ã³ã³ããã¹ãã§éåžžã«èå³æ·±ããã®ã«ãªããŸãã
ãã®ãããDot Viewã®ããã€ãã®ç°¡åãªã²ãŒã ãé©ããŠããŸãã
ãã¹ããã¢ã¢ããªã±ãŒã·ã§ã³å šäœã¯ã 3ã€ã®ã¢ã¯ãã£ããã£ãã«ãã»ã«åããŸã ã
1ïŒ MainActivity-ã¢ããªã±ãŒã·ã§ã³ã¡ãã¥ãŒã«ã¢ããªã±ãŒã·ã§ã³ã衚瀺ããã ãã§ïŒæšæºèµ·åã®ãµããŒãïŒã2çªç®ã®ã¢ã¯ãã£ããã£ãéå§ããããã¢ããªã±ãŒã·ã§ã³ãçµäºããŸãã
2ïŒ DotRunnerã¯äžéã¢ã¯ãã£ããã£ã§ããããã®äž»ãªç®çã¯ããããŒããã£ã¹ãã¬ã·ãŒããŒãä»ããŠã±ãŒã¹ã®ã«ããŒã®ç¶æ ãç£èŠãã3çªç®ã®ã¢ã¯ãã£ããã£ãéå§/åæ¢ããããšã§ãã
... BroadcastReceiver dotReceiver = new DotReceiver(); // () intent-action IntentFilter intentFilter = new IntentFilter("com.htc.cover.closed"); registerReceiver(dotReceiver,intentFilter); ... public class DotReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isCoverClosed = intent.getBooleanExtra("state",false); if(isCoverClosed) { startActivity(new Intent(DotRunner.this, DotActivity.class)); } else{ ... } } }
3ïŒ DotActivity-åã®ã»ã¯ã·ã§ã³ã§èª¬æããã«ãŒã«ã«åŸã£ãŠDot Viewãšå¯Ÿè©±ããã¢ã¯ãã£ããã£ã
ã¹ã±ãŒãªã³ã°ãèæ ®ããŠDot Viewç»é¢ããã䟿å©ã«ã¬ã³ããªã³ã°ããã«ã¯ãã²ãŒã ãã¹ãããã»ã¹ãå®è¡ãããã倧ããªãã¯ã»ã«ããã¬ã³ããªã³ã°ããããã®ãã¹ãŠã®ããžãã¯ãå®è£ ããDotMatrixViewã®ã«ã¹ã¿ã ãã¥ãŒãäœæããå¿ èŠããããŸããã
次ã«ãã²ãŒã ã¯éåžžã«ã·ã³ãã«ã§ããèœäžããªãããã«ãã¥ãŒããã¿ããããå¿ èŠããããŸãã
ãŸããæ°ããã²ãŒã ãéå§ããã«ã¯ãããããã¥ãŒã«ããŒãééããå¿ èŠããããŸãã ããã«ããžã§ã¹ãã£èªèã€ã³ã¿ãŒãã§ã€ã¹ãDotMatrixViewã²ãŒã ã¯ã©ã¹å ã«å®è£ ããïŒ GestureDetectorã¯ã©ã¹ã䜿çšïŒãDot Viewã±ãŒã¹ã§ãžã§ã¹ãã£ãé£ã°ãããšã§ã²ãŒã ãåã³éå§ã§ããŸãã
ã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ã®ãã¢ãããªã¯ãã¡ãã§ã芧ããã ããŸã ã
ãã¹ãã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã¯ã BitBucketã®ãªããžããªã«è¡šç€ºãããŸã ã
å®äºïŒ0ã
HTC Dot Viewã®ååãæ€èšããçµæããã®ã¢ã€ãã¢ã«ã¯ç§å¯ã®ååãå«ãŸããŠããªãããšãæããã«ãªããŸããããã¹ãŠãåãå€ããã®ã§ããããæ°ããã«ããŒã®äžãã§ãã
ééããªããçŸä»£ã®ãŠãŒã¶ãŒã¯ååšããæéã«éåžžã«æµãŸããŠãããšèšãããšãã§ããŸããåšå²ã«ã¯éåžžã«å€ãã®äŸ¿å©ã§èå³æ·±ãããã€ã¹ããããçµéšã ãã§ãªãå šå¡ã远跡ããããšããã§ããŸããã ãŸããDot Viewãªã©ã®éçºè ããã®çŸä»£æ§ãçã¿åºããŠããŸãã å®éãå šäœã圢æãããã®ã¯ããã®ãããªäºçŽ°ãªããšã§ãã ãããã£ãŠããã®ãããªãããããªããšãã®ããã®ãªãŒãã³ã§ã¢ã¯ã»ã¹å¯èœãªAPIã¯ãåãªãããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ãããŸããã ããã¯ãå€ãæŠå¿µã®äœ¿çšãåæ€èšããæ©èœã§ãã
ãæ°ãããã®ã¯ãã¹ãŠå¿ãå»ãããŠãããïŒcïŒã