æ°æ¥åãGoogle Glassã®ã¢ããªã±ãŒã·ã§ã³éçº
ã培åºçã«ç·Žç¿ãã
æ©äŒããããŸããã ç§ã¯ãããŸã§ããã€ã³ããã®ããã«ä»ã®ãã®ãéçºããã€ããã¯ãªãã®ã§ãåŸãããçµéšã¯æéã®çµéãšãšãã«æ··ä¹±ããŸãã ãŸã æ°é®®ãªå°è±¡ãå
±æããããã«ãç§ã¯ãã®ãããã¯ãæžãããšã«ããŸããã
Google Glassã«èå³ããã人ã¯èª°ã§ãããã®ã¬ãžã§ããã®ãœãããŠã§ã¢ãè©°ãç©ããäœã§ããããç¥ã£ãŠãããšæããŸãã ã¯ããããã¯é©å¿ãããã©ã³ãã£ãŒãåããAndroid 4ã§ãã ã¯ãããçŒé¡ãã§ã¯ãadbçµç±ã§Androidã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšã«ãããéåžžã®Androidã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããŸãã ãããããã©ãŒAPIã«ã€ããŠãåç¥ã§ããããããã¯æè¿ãŸã§ãGoogle Glassã®ãŠãŒã¶ãŒã«å
¬åŒã«ãµãŒãã¹ãæäŸããå¯äžã®æ¹æ³ãšèããããŠããŸããã 以äžã«ããã®ããŒã«ã®äœ¿çšã«ã€ããŠå°ã説æããŸãã ããããç§ã話ãããäž»ãªããšã¯ããŸã å
¬åŒã§ã¯ãªãGlasséçºãããã䜿çšããŠãGoogle Glassã®æ¬æ ŒçãªAndroidã¢ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³ã§ãã
ããã§ã¯ããŸãã¯Google GlassãäœããŸããã
é©åœçãªã¬ãžã§ããã®éžæãããææè
ã®äžã«ããªãå Žåã¯ã絶æããªãã§ãã ããã
ããããã©ã³ãã£ãŒãšããã€ãã®é¢é£ããapkãã€ã³ã¹ããŒã«ããããšã§ãAndroidã¹ããŒããã©ã³ãŸãã¯ã¿ãã¬ããããã»ãŒå®éã®Google Glassãäœæã§ã
ãŸã ã ã¿ã€ã ã©ã€ã³ã«ãŒããââéåžžã¯é³å£°ã³ãã³ãã®èªèãBluetoothããªããšãæ©èœããã«ã¡ã©ïŒéåžžã¯Nexus 7ã§ã®ã¿èµ·åå¯èœïŒãµãŠã³ããããã³ãã³ã°ã¢ãŠããåããæ¬æ Œçãªã€ã³ã¿ãŒãã§ãŒã¹ãåŸãããŸãã ã©ããããããããã²ãŒã·ã§ã³ã§ã¯ããŸããããŸããã§ãããããããããã£ãšããŸãããã§ãããã åããŠèµ·åãããšãã©ã³ãã£ãŒã¯éåžžã®ã¢ããªã±ãŒã·ã§ã³ãšããŠã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãèŠæ±ããŸãã 圌ã«æš©å©ãäžããã»ãŒçã®Glass Explorerã«ãªããŸãã å°ãªããšãããã©ãŒAPIãä»ããŠèªåã«ã¿ã€ã ã©ã€ã³ã«ãŒããéä¿¡ã§ããŸãã
GoggleãMirror APIãGoogle Glassææè
ã®ã¿ã«æäŸããã®ã¯ãªãã§ããïŒ
éåžžã®ããã°ã©ãã¯ãæ°ããããŒã«ã«ã¢ã¯ã»ã¹ããŠäœãããŸããïŒ ãã¡ããã圌ã¯ã³ãŒããæžãå§ããŸãã 次ã«ãã¹ãããŸãã ãããŠããã°ããªãããã«èŠãããšãã圌ã¯ãšã«ãã圌ã®çºæ¡ãå
¬éããŸãã ããã¯ã©ãã§ãæ£åžžã§ãããGoogle Glassã§ã¯ããã§ã¯ãããŸããã ãã®ãã©ãããã©ãŒã ã§ã¯ããŠãŒã¶ãŒã¯å®äžçãšä»®æ³äžçã®éã§æ³šæãåãæ¿ããŸããã ãã®æå³ã§ã®Google Glassã¯ãŠããŒã¯ãªããŒã«ã§ãã ãã¡ã¬ããã䜿çšããªãããã°ã©ãã¯ãç¹ã«æåã¯ç¹ã«ãã¢ããªã±ãŒã·ã§ã³ãç®ç«ããªãæ©èœçã«ããããšã¯ã§ããŸããã Glass Explorerã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã¯ãã¬ã€ãã©ã€ã³ã«å®å
šã«çœ®ãæãããã®ã§ã¯ãããŸããã ãããããGoogle Glassã®ãŸã å°ããªã³ãã¥ããã£ãããã£ãªã¢ãã®äžå¿«ã§éªéãªGoogleã¢ããªã±ãŒã·ã§ã³ããä¿è·ããMirror APIããé ããããã§ãã
ããããã¢ã¯ã»ã¹æš©ããããšããŸãããã ããã§äœãã§ããŸããïŒ
é
ä¿¡æéãä¿èšŒããããšãªãçºè¡ããã³è³ŒèªããŸã
Google Glassã€ã³ã¿ãŒãã§ãŒã¹ã®äž»ãªãã©ãã€ã ã¯ã¿ã€ã ã©ã€ã³ã§ãã æèšãšé³å£°å
¥åãåããããŒã ç»é¢ã®å³åŽã«ã¯ãéå»ã®ãã®ã§ããç¡éã®ã«ãŒãã®ãªãã³ããããŸãã Mirror APIã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯ãæç³»åã§ã«ãŒããå
¬éãããããã®ã«ãŒãã§çºçããã€ãã³ãããµãã¹ã¯ã©ã€ãã§ããŸãã
ãŠãŒã¶ãŒã¯ãã«ãŒãã«æ·»ä»ãããã¡ãã¥ãŒé
ç®ã䜿çšããŠã€ãã³ããçæããŸãã ã«ãŒãã«ã¯ãå®çŸ©æžã¿ã®ã¡ãã¥ãŒé
ç®ãšããŠãããšãã°ãåé€ããŸãã¯ãå
±æãã®ã»ããã¢ããªã±ãŒã·ã§ã³ã§å®çŸ©ããããã®ãå«ãŸããå ŽåããããŸãã ã«ãŒãã«ã¯ãä»å±ã®ã«ãŒããå«ãŸããå ŽåããããŸãã ãã®ãããªãããã±ãŒãžãã®ç·šæã¹ããŒã ã¯éåžžã«åå§çã§ããããã«ãã¬ãã«ã®æ§ç¯ãèš±å¯ããŠããŸããã äžé£ã®ã«ãŒãã«åãbundleIdãå²ãåœãŠããã«ããŒããšãªãã«ãŒãã«isBundleCover = trueãèšå®ããŸãã ãã®å Žåããã«ããŒãã¡ãã¥ãŒã¯äœ¿çšã§ããªããªããŸãã ãŠãŒã¶ãŒã¯ãæ¥ç¶ãããŠãããã¹ãŠã®ã«ãŒããåãå€ããå Žåã«ã®ã¿ãåã³äœ¿çšã§ããŸãã
ã«ãŒãã¯ãããŒã ãç»é¢ã®å·ŠåŽã«é
眮ããããšãã§ããŸãã ãããã¯ããã³çãããããã«ãŒãã§ãã isPinned = trueããããã£ãèšå®ããããšã«ãããMirror APIãä»ããŠãã®ãããªã«ãŒããè¿œå ããããšããããšãã§ããŸãããã»ãšãã©ã®å Žåãäœãæ©èœããŸããã Mirror APIã¯åŒãç¶ããã«ãŒããå
±æãã£ãŒãã«ãã³ãããŸãã ãã ãã解決çããããŸããã¢ã¯ã·ã§ã³ã䜿çšããŠã¡ãã¥ãŒãªãã·ã§ã³ã«TOGGLE_PINNEDãè¿œå ãããŠãŒã¶ãŒèªèº«ãå¿
èŠãšèããå Žåã¯ã«ãŒããä¿®æ£ããŸãã ã«ãŒããæŽæ°ããŠãããã®ç¶æ
ã«ã¯åœ±é¿ããŸãããã«ãŒãã¯ã管çè
ãŸãã¯ãŠãŒã¶ãŒãåé€ãããããŠãŒã¶ãŒãUnPinãåãã¡ãã¥ãŒãªãã·ã§ã³ã«ãããŸã§åºå®ããããŸãŸã«ãªããŸãã
ãã¡ãããããã¯Mirror APIã§ã§ããããšã®ãã¹ãŠã§ã¯ãããŸããã ãŠãŒã¶ãŒã«ã¢ããªã±ãŒã·ã§ã³ã®ãé£çµ¡å
ããè¿œå ããŠãåçããããªãææ¢ãããæ©äŒãäžããããšãã§ããŸãã ã«ãŒãã«ã¯æ·»ä»ãã¡ã€ã«ãå«ãŸããå ŽåããããŸãã ãããã®åãã«ãŒãã®å€èŠ³ã圢äœãã«ã¯å€ãã®æ©èœããããŸãã ããã§ã¯ãããããã¹ãŠãè©Šãããšãã§ãã䟿å©ãªãªãœãŒã¹ãžã®ãªã³ã¯ã®ã¿ãæ®ããŸãã
APIs Explorerã
䜿çšãããšãMirror APIãšã®éä¿¡ã®ãã¬ãŒãã³ã°ãè¡ãããšãã§ãã
ãã¬ã€ã°ã©ãŠã³ãã§ã¯ã«ãŒãããèšèšãã§ããŸãã
ãã®å Žåã«éèŠãªããšã¯ç°ãªããŸãããã©ãŒAPIã䜿çšããŠå¯Ÿè©±åã¢ããªã±ãŒã·ã§ã³ãäœæããããšã¯ã§ããŸããã ãŠãŒã¶ãŒã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãã§äœããè¡ãããšãã§ããŸããããã®ã€ãã³ãããã€Googleããé
ä¿¡ããããã¯ããããŸããã ãŠãŒã¶ãŒã«äœããèŠããããšãã§ããŸãã ãã ãããŠãŒã¶ãŒããã¡ãã»ãŒãžããåä¿¡ããææãäºæž¬ããããšã¯ã§ããŸããã Mirror APIã䜿çšãããšãåªããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ãã¢ã®ã»ãšãã©ã¯æ ¹æ¬çã«å®çŸäžå¯èœã§ãã ãããç解ããå¿
èŠããããŸãã ãããŠãããªãã¯ããã«èããªããã°ãªããŸããã
ã€ã³ã¿ã©ã¯ãã£ããªäœããããæ¹æ³ã¯ïŒ
ãããŠãããã§Glasséçºããããç§ãã¡ã®å©ãã«ãªããŸãã å
¬åŒã«ã¯ããŸã æ¿èªãããŠããŸãããããŸã å
¬éãããŠããŸããã Googleã§ã¯ãéåžžã®Android SDKã®äœ¿çšãæšå¥šããŠããŸãã ãããããããŸããããããŠãŒã¶ãŒå
¥åããšããç¹ã§ã®Google Glassã®éåžžã«çããç¹æ§ãå¿ããªãã§ãã ããã ãã¿ã³ã¯ãããŸããã éåžžã®æå³ã§ã®ã¿ããããã«ã¯ãããŸããã Glass Explorerããã¿ãããããã³ãã¹ã¯ã€ããããã®ã¯ãžã§ã¹ãã£ã®ã¿ã§ãã OnTouchããã£ããããããšã¯ã§ããŸããã é·æŒããååããæ©èœã¯ãªãããããããŠã³ãžã§ã¹ãã£ã¯äºçŽãããŠãããonBackPressedãšããŠã¢ããªã±ãŒã·ã§ã³ã«ãã£ãããããŸãã å¥åŠãªããšã«ãã»ã³ãµãŒã圹ç«ã¡ãŸãã ãã®ããã€ã¹ã®ããªãããšé ã®å転ã¯ããã¿ã³ã«ä»£ãã䟡å€ã®ãããã®ã§ãã é³å£°å
¥åã§ã¯ããã¹ãŠã眮ãæããå¿
èŠããããŸãããç§ãã¡ãæãã»ã©è¯ãã¯ãããŸããã å°ãªããšããã³ãã³ããè¿œå ããŠãèªèããããšãã«ã€ãã³ããåãåãããšãã§ããŸããã§ããã ããããããããç§ã¯ååã«åªåããªãã£ãã®ã§ãããªãã¯ãã£ãšããŸãããã§ãããã
äžè¬çã«ãããã¯äœããã®åœ¢ã§è¡ãããŸã
Google Glassã®ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ãããšãã°æ¬¡ã®
ãããªãã®ããããŸãã ããããglasslib.jarãååŸããŸããããã¯ãããããGDKãšããŠåŸã§å
¬éããããã®ã®é¡äŒŒç©ã§ãããšæãããŸãã ããããããžã§ã¯ãã«è¿œå ããŠããã©ãŒAPIã䜿çšããã®ãšåãæ¹æ³ã§ãã£ã ã©ã€ã³ã«ãŒããæäœããæ©äŒãåŸãŸãã 2ã€ã®éèŠãªå©ç¹ã®ã¿ããããŸãã é
延ãå¶éã¯ãããŸããã ããã§ã«ãŒããisPinnedïŒtrueïŒã«ãããšããŠãŒã¶ãŒã®é¢äžãªãã«ãããŒã ãç»é¢ã®å·ŠåŽã«çŽ çŽã«ãªããŸãã ç§ãã¡ã¯ãTimlineHelperãéããŠãåžžã«ãµãŒãã¹ããTimlineãšé£æºããŠããŸãã éåžžã®ã¹ããŒã ã¯æ¬¡ã®ãšããã§ããã¢ããªã±ãŒã·ã§ã³ã«ã¯ãèµ·åæã«ãµãŒãã¹ãéå§ããŠçµäºããã¢ã¯ãã£ããã£ã1ã€ãããããŸããã ãŸããããã€ã¹ããŒãã€ãã³ãã«ãµã€ã³ã¢ããããBroadcastReceiverãããµãŒãã¹ãå床äžããããšã¯åé¡ãããŸããã ãµãŒãã¹ã§ã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããæã£ãŠãããã©ããã確èªãïŒãã®ããããã®IDãSharedPreferencesã«ä¿åãããšããã§ãããïŒãå€ããã®ãåé€ããŠæ°ãããã®ãè¿œå ããåã³ãã®IDãä¿åããŸãã
import android.app.Service; import android.content.ContentResolver; import android.content.Intent; import android.content.SharedPreferences; import android.os.IBinder; import android.preference.PreferenceManager; import com.google.glass.location.GlassLocationManager; import com.google.glass.timeline.TimelineHelper; import com.google.glass.timeline.TimelineProvider; import com.google.glass.util.SettingsSecure; import com.google.googlex.glass.common.proto.MenuItem; import com.google.googlex.glass.common.proto.MenuValue; import com.google.googlex.glass.common.proto.TimelineItem; import java.util.UUID; public class GlassService extends Service { private static final String HOME_CARD = "home_card"; @Override public int onStartCommand(Intent intent, int flags, int startid){ super.onStartCommand(intent, flags, startid); GlassLocationManager.init(this); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String homeCardId = preferences.getString(HOME_CARD, null); TimelineHelper tlHelper = new TimelineHelper(); ContentResolver cr = getContentResolver(); if(homeCardId != null){
äžèšã®ããã«ãã«ãŒãã«ã¯2ã€ã®é
ç®ã®ã¡ãã¥ãŒããããŸãïŒåé€ãšã«ã¹ã¿ã ã ãããŠãæåã®ãã®ãã·ã¹ãã ã«ãã£ãŠåŠçãããã«ãŒããçŽ çŽã«åé€ãããšã2çªç®ã®ãã®ããããŒããã£ã¹ããã¹ããŒããããããã£ããããŠåŠçããããšãã§ããŸãã
ããããªãHelloãworldãã«ãã ãããªãããã«ãç§ã¯
å°ããªãããžã§ã¯ããäœããŸããã ãããããé«åºŠãªè³æãšããŠäœ¿çšããŠãGoogle Glassã®ããã€ãã£ããäœæ¥ã®æ©èœãåŠç¿ã§ããŸãã ããã§ããã¡ãããç§ã¯ãã€ã質åã«çããæºåãã§ããŠããŸãã
ãã¡ãããTimeLineãã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠäœ¿çšããããšã匷å¶ãã人ã¯ããŸããã åçŽãªã³ã³ãããŒã«ã§ã¢ã¯ãã£ããã£ãç°¡åã«äžãããŠãŒã¶ãŒã«ãããã®å¯ŸåŠæ¹æ³ãæããããšãã§ããŸã...ã²ãŒã ãªã©ã®ã°ã©ãã£ã«ã«ãªã¢ããªã±ãŒã·ã§ã³ã®å Žåããããäžè¬çã«å¯äžã®æ¹æ³ã§ãã ããããéåžžã®ã¢ããªã±ãŒã·ã§ã³ã«é¢ããŠã¯ãç§ã®æèŠã§ã¯ããã®çãããã©ãããã©ãŒã ã§ã¯ããã€ãã£ããã¹ã¿ã€ã«ã§å®è¡ããå¿
èŠããããŸãã ãã®åŸããŠãŒã¶ãŒããã®æž©ããæè¿ãæåŸ
ã§ããŸãã