Root你的Nook Touch,享受完整的Android功能
分享一下Nook Touch root的過程,變磚的話我可沒法負責喔
原文出自於:http://forum.xda-developers.com/showthread.php?t=1132292 以及 http://nookdevs.com/NookTouch_Rooting
Root完成之後,你會有Superuser的權限;Nook Touch的更新會被block掉,所以不會更新了;可以adb debug了;然後可以安裝non-market的軟體;還可以安裝google market…等。
1. 首先需要一個microSD卡,至少512MB以上。然後下載xda討論裡的Nook STR 2.1 Script的檔案。
2. 下載完成後,解開產生一個目錄,我們稱它『工作目錄』好了。目錄裡的Win32DiskImager可以幫你把目錄裡的另一個檔案noogie.img寫進準備好的microSD卡裡。當然mircoSD要透過usd插在電腦上,寫的時候也要注意選的磁碟區正確,不然寫錯磁區可是會把資料都洗掉喔,有點危險。
2.1 如果你是MAC的使用者,得利用terminal來做這件事情了。下方的disk#或rdisk#在我的電腦是用disk2以及rdisk2,每台電腦不一樣喔。/path/to…的位置也因個人電腦而異,看你把檔案放在哪了。
diskutil list
diskutil unmountDisk /dev/disk#
dd if=/path/to/noogie.img of=/dev/rdisk# bs=1m
3. 寫進去之後,把Nook Touch關機,然後把microSD插進Nook Touch裡。把Nook Touch接上USB線,再接上電腦。Nook Touch應該會自動開機,經過幾十秒後Nook Touch畫面上會出現『Forever Rooted』,這樣就Root成功了。
4. 然後,你只要執行工作目錄裡的xe-autonook.bat,跟著提示做,它就會自動幫你完成後面的設定與安裝工作。
4.1 如果你是MAC使用者的話,可能還是得利用terminal來完成xe-autonook.bat所做的事情。
4.1.1 如果你的USB有偵測到Nook Touch,首先要把工作目錄裡的uRamdisk_rooted,覆蓋掉Nook Touch裡的uRamdisk。然後移除microSD卡,按著Power鍵10~15秒以關閉Nook Touch,然後再開。後面動作得要先設定好Nook Touch的wifi先,比方說是192.168.0.123。以下是termianl裡的指令了,為閱讀方便,$當做prompt。
- 連接Nook Touch via wifi並且設定adb_usb.ini,以後就可以用USB連接Nook Touch了
$ adb kill-server
$ adb connect 1921.68.0.123
$ echo 『0×2080″ >> ~/.android/adb_usb.ini
- 設定non-market安裝
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
$ sqlite3 settings.db 『update secure set value=1 where name=’install_non_market_apps’;』
$ adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
$ del settings.db
- 安裝SQLite3
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb push ./mods/sqlite3 /system/bin
- 安裝Superuser 2.3.6.1-ef
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb install ./apks/Superuser.apk
$ adb push ./mods/su /system/bin
$ adb shell chmod 6755 /system/bin/su
- 停止 Nook Touch的OTA更新
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb pull /data/data/com.bn.devicemanager/databases/devicemanager.db devicemanager.db
$ sqlite3 devicemanager.db 『update registry set value=’manual’ where name=’com.bn.device.fota.mode’;』
$ adb push devicemanager.db /data/data/com.bn.devicemanager/databases/devicemanager.db
$ del devicemanager.db
- 讓左邊的按鍵變成Back以及Menu功能
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb push ./mods/TWL4030_Keypad.kl /system/usr/keylayout/TWL4030_Keypad.kl
$ adb shell chmod 644 /system/usr/keylayout/TWL4030_Keypad.kl
- 移除User Guide and Quick Start
$ adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
$ adb shell rm /system/media/books/Quick_Start.epub
$ adb shell rm /system/media/books/User_Guide.epub
- 安裝一些軟體:包括Kindle,Nook Color tools, 以及LauncherPro等,可以選擇性的安裝你想要的
$ adb shell chmod 644 /system/app/*
$ adb install ./apks/com.amazon.kindle-1.apk
$ adb install ./apks/NookColorTools_0.2.apk
$ adb install ./apks/com.smart.swkey-1.apk
$ adb install ./apks/com.bigtincan.android.adfree-1.apk
$ adb install ./apks/com.rhythm.hexise.uninst-1.apk
$ adb install ./apks/LauncherPro.apk
$ adb install ./apks/com.th.android.widget.gTabsimiClock-1.apk
- 重新開機,成功啦
$ adb reboot
$ adb kill-server
剩下還有幾件事情,下載再介紹,包括換回原來Nook Touch的鍵盤、Market的更新、搜尋功能…
Nook The Simple Touch Reader滿足我們的觸控控
一年多前,聽說過一家國內大廠打算做一個搭載Android OS的eReader,我對這樣的產品方向是滿興奮的。在那一年多前(差不多同時)iPad也剛推出,很多人推測eReader死定了。現在看來還真的是死了不少廠商,除了Amazon Kindle之外,就Nook還算活的不錯。現在讓我興奮的Android eReader來了,就是Nook The Simple Touch Reader (簡稱:Nook STR),毫不猶豫地把Kindle賣掉,換一台Nook STR。
插個題談談平板的市場,個人的觀察是覺得平板的市場上,除了iPad的10吋平板外,7吋或是再大一點的8吋也是不錯的方向,尤其在重量以及可攜度上。我也覺得,因為重量與可攜度的影響,現在很多人是在家裡使用iPad的,以8成以上的平板都是iPad或是10吋Android Pad的狀況下,讓整個平板的使用場域顯看起來是在家裡居多。未來如果iPad推出比較小的平板,再加上不少的小Android Pad,可能在路上或是其他場域使用的頻率才會慢慢增加。
我們拿到Amazon Kindle時,是不是常常想要用手再螢幕上滑一下翻頁呢?才發現~沒有觸控螢幕的功能。原來我們都已經養成觸控癮了,沒有觸控很怪的(電視機要不要觸控呢?我是不想要啦!),而Nook STR就可以滿足我們的觸控控,雖然沒有iphone/ipad的順暢,但是它做到了。另一個重點是,Nook STR可以支援EPUB格式的書本,也可以閱讀中文EPUB書本。雖然Nook STR是Android OS的閱讀器,但是目前沒有辦法透過USB安裝Android軟體,但是透過Root的動作,我們就可以裝上Android Market,然後裝上新的Launcher以及其他各式告樣的Android App了。今天先簡單介紹一下如何管理與閱讀中文EPUB書本,如何Root晚一點再來玩。
- 首先,我先到百年千書的網站下載幾本EPUB的書回來。網站在這裡: wp.1000ebooks.tw
- 接下來,打開calibre,把EPUB的書加入書庫。因為Nook STR的reader的設定字型只有英文,所以會出現沒有辦法看到中文字的問題,所以得借用Android系統的中文字型來顯示EPUB書本。在外觀與感覺(Look & Feel)的額外的css欄位裡加上以下內容。因為calibre從0.8.3開始就支援Nook STR了,可以直接把書本存進去(利用功能:傳送到裝置)。
-
@font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: normal; src: url(res:///system/fonts/DroidSansFallback.ttf); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: normal; src: url(res:///system/fonts/DroidSansFallback.ttf); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: normal; font-style: italic; src: url(res:///system/fonts/DroidSansFallback.ttf); } @font-face { font-family: "DroidFont", serif, sans-serif; font-weight: bold; font-style: italic; src: url(res:///system/fonts/DroidSansFallback.ttf); } body { font-family: "DroidFont", serif;} - 在用Nook STR閱讀書本時,需要在字型裡選取Publisher Defaults,就ok了

iOS5開始對Web Apps支援scrolling
iOS5開始對Web Apps支援scrolling的動作了。
最近正在開發HTML5的電子書閱讀器,在iOS4裡本來打算在css加上scrolling的控制功能。這幾天測試了一下iOS5,發現了可以直接scrolling了。除了scrolling之外,(在iOS4,iOS5)使用者都可以設定擴充Web App的使用容量(不像PC上的Chrome只有5MB的限制),比較適合支持離線使用。
另一方面,Financial Times也利用HTML5做了一個Web App (app.ft.com),實際使用起來,感覺還不錯用的樣子,現在必須使用ipad/iphone來閱讀,未來還會可以在android上使用。如果Apple與Google好好地支援Web Apps的應用,應該還會有更多的功能推出,接下來在Web App的發展上應該更容易做到與原生程式接近的使用者體驗。
細節報導參考一下這裡。
Android的OOM
今天玩了一下子WINAMP for Android,很意外地發現了OOM的問題。
過去幾個月,我們也為了android的OOM問題所苦。現在看到WINWAP的OOM,要說是感同身受嗎,還是有更好的形容詞呢?其實這個問題我個人覺得是滿大的問題,在Android各大討論區都有很多的討論。我們也嘗試了各式各樣的方法去解決。可以說是賠了時間與金錢,還好有換來寶貴的經驗。希望Android平台可以在這方面多多加油,讓軟體開發者的日子好過一點,讓我們的日子好過一些。
05-27 11:35:26.820: ERROR/dalvikvm-heap(1073): 1639680-byte external allocation too large for this process.
05-27 11:35:26.870: ERROR/GraphicsJNI(1073): VM won't let us allocate 1639680 bytes
05-27 11:35:26.870: DEBUG/dalvikvm(1073): GC_FOR_MALLOC freed 5K, 51% free 3910K/7943K, external 23874K/25488K, paused 35ms
05-27 11:35:26.870: DEBUG/skia(1073): --- decoder->decode returned false
05-27 11:35:26.870: DEBUG/AndroidRuntime(1073): Shutting down VM
05-27 11:35:26.870: WARN/dalvikvm(1073): threadid=1: thread exiting with uncaught exception (group=0x40015560)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): FATAL EXCEPTION: main
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nullsoft.winamp/com.nullsoft.winamp.TrackBrowserActivity}: android.view.InflateException: Binary XML file line #33: Error inflating class <unknown>
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:2832)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.access$1600(ActivityThread.java:117)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.os.Handler.dispatchMessage(Handler.java:99)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.os.Looper.loop(Looper.java:130)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.main(ActivityThread.java:3683)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at java.lang.reflect.Method.invokeNative(Native Method)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at java.lang.reflect.Method.invoke(Method.java:507)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at dalvik.system.NativeStart.main(Native Method)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): Caused by: android.view.InflateException: Binary XML file line #33: Error inflating class <unknown>
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.createView(LayoutInflater.java:518)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.parseInclude(LayoutInflater.java:682)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.rInflate(LayoutInflater.java:619)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.Activity.setContentView(Activity.java:1657)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at com.nullsoft.winamp.TrackBrowserActivity.onCreate(TrackBrowserActivity.java:177)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): ... 12 more
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): Caused by: java.lang.reflect.InvocationTargetException
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at java.lang.reflect.Constructor.constructNative(Native Method)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.LayoutInflater.createView(LayoutInflater.java:505)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): ... 25 more
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:359)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:385)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:373)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:154)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.content.res.Resources.loadDrawable(Resources.java:1694)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.view.View.<init>(View.java:1951)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.widget.ImageView.<init>(ImageView.java:112)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): at android.widget.ImageView.<init>(ImageView.java:108)
05-27 11:35:26.900: ERROR/AndroidRuntime(1073): ... 28 more
05-27 11:35:26.920: WARN/ActivityManager(98): Force finishing activity com.nullsoft.winamp/.TrackBrowserActivity
05-27 11:35:27.420: WARN/ActivityManager(98): Activity pause timeout for HistoryRecord{4073a420 com.nullsoft.winamp/.TrackBrowserActivity}
電子書活的好好的;Adobe也活的很好、也許7吋pad也要活的很好

Kindle今年賣了800萬台,電子書沒有死,而且活的很好也。如果加上彩色的能力、觸控的技術、以及開放的平台,下一代會更好。當初大家都猜ipad會把kindle打死,但是並沒有,這個平板的市場也許不會你死我活,而可能是大家都越來越好。
不少人是Apple給洗腦了,似乎蘋果喊冰都會結凍。不過電子書沒被ipad打掛、Adobe也撐過來了,還創了單季營收新高、Android出了一堆不被Jobs看好的7吋pad,而且也許蘋果最後也會出個7吋pad呢。蘋果雖然厲害,做很多對的事情,也讓我掏出荷包買了一堆他的產品,但是千萬不要給他牽著走而迷失了方向。我猜蘋果除了可能會推出7吋平板外,等到下一代的電子紙技術成熟,誰敢保證他不會也推出電子紙的平板呢?
雲端通訊錄
看到HTC推出htcsense.com,心中當然是很多的OOXX。其實早在兩年前,我們就在做Android的雲端社群通訊錄了,參加了ideas shows、demo show、mobilehero等活動發表,也透過不同的管道希望能夠與國內幾家業者合作,不過都沒有辦法成功。細節也就不用再多提了,都是對方很大,我們很小的狀況。也許是在沒有門當戶對的狀況下,很難成局,即使當時我們滿腦袋的想法與熱誠,呵呵。
現在看來,在概念上htcsense其實沒有什麼新意(至少對我來說,是這樣子的),不管社群訊息的整合、或是豐富內容的來電顯示、不失聯的通訊錄、手機備份與保全、整合LBS等等東西。不管是國內國外、大公司新創公司,大家可以想到的基本上也都不會差太多,不過到現在為止好像沒有看到哪家公司把雲端行動社群做的有聲有色的。
我需要猜測htcsense會不會是個成功的服務嗎?我個人猜測是:不會。(好吧!我承認~~我嫉妒!我鬱卒!對通訊錄服務失去了熱誠!!)
順道一提的是,當初我們提出的服務概念裡,還包括了像Google Waves的討論串,讓通訊錄裡的朋友可以透過手機軟體溝通。結果勒!現在連Google那麼大家的公司沒法推動一個全新的互動方式,我們要做到成功簡直是天方夜譚啊!!
也許htcsense服務可以提供大家一個雲端的行動社群概念,也許真的有廠商也有興趣推出一個互相較勁的服務,讓我們的frienditude服務重生。不過在那之前,我們已經把重心轉往其他領域發展了,希望未來的合作對象可以感受到我們創新的想法與熱誠。
Kindle3感想
iPad發表之後,很多人都說,電子書完蛋了,我也不是很在意,反正我也愛玩iPad,大家講的好像也都很對。在iPad發表前,曾經到朋友公司聽聽他的電子書大夢、也玩玩他的手上的樣品機,其實感覺還不錯。幾個月前kindle3開始預購,忍不住手癢也去訂了一台,上個月底到貨,真正開始我的電子書體驗。
其實,我還滿喜歡這本電子書的,很輕、眼睛看的舒服、可以不用一直充電…這些好處大家都知道。順利地讓我在上面翻完了一本mobile web的原文書。
其實剛拿到的那幾天,努力的想要找尋中文書籍,只是都是古典文學、或是鄉民版的金庸等。即使把金庸裝進去Kindle之後,還會有中文字集不夠用的問題,一些中文字變成了方塊。寫信去Amazon問看看有沒有解決方案後,得到回覆是現階段沒有辦法解決,哈!!真慘。
對我來說,真正讓我手上電子書卡卡的原因並不是iPad的設計比他好,其實Kindle也真的設計的不錯。真正的問題在於
- 中文書籍取得困難
- 中文字元支援不足
其他大家所說的問題,我也不是很在意就是了,這兩個問題應該都不是太難解決才是吧。不過在還沒有解決之前,也許iPad或是我閱讀的臨時解決方案。偷偷說幾句話,如果我們政府敢在小學推動非電子紙的方案,我一定抗議(該到哪去抗議呢?)。另外中年或是老人家也適合用電子紙方案,LCD螢幕不是看到眼膏一直留,蚊子四處飛了嗎?
Frienditude Sync in Hami Apps
今天中華電信軟體商店終於開幕了!!給Android用的軟體商店當然索驥創意是不可以缺席的,再忙也得寫個開箱文哈!!今天要介紹的是一個雲端通訊錄服務Frienditdue,讓你也可以在電腦前管理手機通訊錄喔。
先用Android上面的瀏覽器,連到hami.emome.net,然後點選軟體商店。然後你得安裝一下Hami Apps,按下載HamiApps下載,然後安裝、啟動,終於進到Hami Apps裡了。接下來才要開始準備尋找並安裝Frienditude Sync。
在HamiApps裡,進到應用程式選項後,可以看到一個應用程式清單,慢慢往下Roll。看到了嗎?Frienditude Sync出現了!!由索驥創意科技建構的行動服務終於出現了,這個Frienditude經歷了資策會Ideas Show、Demo Show 的洗禮、以及資策會與中華電信的支持,終於開始對外服務。現在就下載吧。
在開始使用這個軟體前,先到frienditude.com完成註冊,就可以開始使用了。把註冊的帳號與密碼打進去,到第一頁按下圓圓的同步按鈕,就開始同步了。
不過!注意!我們還是在Beta階段。告訴我們你的使用狀況,我們希望這個服務可以更好。
業績強強滾,得再徵人了
很久沒有空上新的文章,實在是案子很多,得再徵人了。
需求如下,有興趣的趕快來喔,介紹一下好歡迎。
我的章魚 Chumby
剛剛拿到手的章魚,我不喜歡寫開箱文,比較喜歡貼圖,參考一下吧。
話說這章魚也已經兩歲了,最近SONY也展示了一個相容的7″鬧鐘,不過我個人比較喜歡這個Classic的味道。我們也做了一個線上展示的章魚,在這裡。虛擬的章魚與我的這顆章魚鬧鐘跑的內容可是一模一樣的喔,除了背景我還可以放音樂、聽廣播、以及設定鬧鐘。
為什麼我會喜歡它呢?我覺得這是網路無所不在的一種實現,到處可以獲得朋友的最新消息、串流照片、同步行事曆、讀新聞…現在人的網路生活好像就該如此。我也計畫在幫我媽、岳父岳母各添購一台,讓他們隨時可以看到我上傳的照片。















