HTCã®äžçã§ã¯ãããããã¥ãŒã®ãããªãã®ããããŸãã
HTC Dot Viewã¯éåžžã«ç¬åµçãªã±ãŒã¹ã§ãHTCïŒOne lineïŒã®é«åºŠãªã¢ãã«ã®ãŠãŒã¶ãŒãéåžžã«éæšæºçãªæ¹æ³ã§ããã€ã¹ã䜿çšã§ããããã«ããŸãã ãã®ã¢ã¯ã»ãµãªã¯ãäŒç€Ÿã«ããã«å€§ããªæ å
ãããããããã«èšèšãããŠããããã®ã¿ã¹ã¯ã«ããŸã察åŠããŠããããã§ããå€ãã®äººãHTC One *ãæ¯æããŠéžæããDot Viewã±ãŒã¹ã®ãããã§ãã
ãã®ãããªã¢ã¯ã»ãµãªã¯ããŠãŒã¶ãŒã倿°ã®ã¬ãã¥ãŒãè¡ãã ãã§ãªããã¢ãã€ã«éçºè
ããããã®ã¯ãŒã«ãªæ©èœã䜿çšããéæšæºã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããšãä¿ããŸãã ã¡ãŒã«ãŒïŒ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();
ããã§ã¯ã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();
3ïŒ
DotActivity-åã®ã»ã¯ã·ã§ã³ã§èª¬æããã«ãŒã«ã«åŸã£ãŠDot Viewãšå¯Ÿè©±ããã¢ã¯ãã£ããã£ã
ã¹ã±ãŒãªã³ã°ãèæ
®ããŠDot Viewç»é¢ããã䟿å©ã«ã¬ã³ããªã³ã°ããã«ã¯ãã²ãŒã ãã¹ãããã»ã¹ãå®è¡ãããã倧ããªãã¯ã»ã«ããã¬ã³ããªã³ã°ããããã®ãã¹ãŠã®ããžãã¯ãå®è£
ãã
DotMatrixViewã®ã«ã¹ã¿ã ãã¥ãŒãäœæããå¿
èŠããããŸããã
次ã«ãã²ãŒã ã¯éåžžã«ã·ã³ãã«ã§ããèœäžããªãããã«ãã¥ãŒããã¿ããããå¿
èŠããããŸãã
ãŸããæ°ããã²ãŒã ãéå§ããã«ã¯ãããããã¥ãŒã«ããŒãééããå¿
èŠããããŸãã ããã«ããžã§ã¹ãã£èªèã€ã³ã¿ãŒãã§ã€ã¹ã
DotMatrixViewã²ãŒã ã¯ã©ã¹å
ã«å®è£
ããïŒ
GestureDetectorã¯ã©ã¹ã䜿çšïŒãDot Viewã±ãŒã¹ã§ãžã§ã¹ãã£ãé£ã°ãããšã§ã²ãŒã ãåã³éå§ã§ããŸãã
ã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ã®ãã¢ãããªã¯
ãã¡ãã§ã芧
ããã ããŸã ã
ãã¹ãã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã¯ã
BitBucketã®
ãªããžããªã«è¡šç€ºãã
ãŸã ã
å®äºïŒ0ã
HTC Dot Viewã®ååãæ€èšããçµæããã®ã¢ã€ãã¢ã«ã¯ç§å¯ã®ååãå«ãŸããŠããªãããšãæããã«ãªããŸããããã¹ãŠãåãå€ããã®ã§ããããæ°ããã«ããŒã®äžãã§ãã
ééããªããçŸä»£ã®ãŠãŒã¶ãŒã¯ååšããæéã«éåžžã«æµãŸããŠãããšèšãããšãã§ããŸããåšå²ã«ã¯éåžžã«å€ãã®äŸ¿å©ã§è峿·±ãããã€ã¹ããããçµéšã ãã§ãªãå
šå¡ã远跡ããããšããã§ããŸããã ãŸããDot Viewãªã©ã®éçºè
ããã®çŸä»£æ§ãçã¿åºããŠããŸãã å®éãå
šäœã圢æãããã®ã¯ããã®ãããªäºçްãªããšã§ãã ãããã£ãŠããã®ãããªãããããªããšãã®ããã®ãªãŒãã³ã§ã¢ã¯ã»ã¹å¯èœãªAPIã¯ãåãªãããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ãããŸããã ããã¯ãå€ãæŠå¿µã®äœ¿çšã忀èšããæ©èœã§ãã
ãæ°ãããã®ã¯ãã¹ãŠå¿ãå»ãããŠãããïŒcïŒã