Nikon Snapbridge 使用心得

數週前購入了 Nikon Z6ii 相機,

Nikon 的 Snapbridge app 真的非常好用,難得在 App store 上面可以看到評價不是低於三顆星的某種硬體支援 app。
只要配對好藍牙裝置,在手機開啟背景自動下載,相機也開啟關機狀態下傳送照片,就好了。

Snapbridge-app

真的這樣就好了。之後,只要拍完照,在背景相機就會自動連結手機並且上傳低畫質版本的照片到手機。
雖然是低畫質,但也是有兩百萬畫素,上傳 Facebook/Twitter/Instagram 綽綽有餘,套個濾鏡根本攝影大師。

nikon-settings

更棒的是,若是有啟動地理位址同步的功能,手機會定期在背景定期更新 GPS 資訊到相機,相機在拍照的時候會打上 GPS tag。

由於相機本身沒有內建 GPS 功能,因此啟動此功能會消耗更多手機的電力,但比起以前要額外準備 GPS 記錄器記錄軌跡,回家再使用不知道什麼軟體將 GPS 軌跡和照片檔案結合起來的複雜程序,實在是方便太多了。

沒想到在消費型數位相機逐漸被手機取代的今天,也能看到這樣的軟硬體整合的方案,瞄準很多顧客還是想要有相機的拍照品質但也希望可以方便的上傳社群媒體,不必什麼事情都回家拆記憶卡才能做。

雖然以前有一些古怪的產品號稱可以整合兩個世界,但大多數都只是懶惰的直接在相機上裝一個巨大螢幕和舊版本的 Android 作業系統,雖然勉強可以使用但兩邊的順暢度都很差,使用體驗很糟糕。

這個 app 真的值得我發一篇廢文來推廣。

Nikon Snapbridge 使用心得

[Android] 使用 HttpClient post 資料到伺服器

其實 Android 有內建 HttpClient 的 library,但是實在是太舊了(4.0beta2),所以用了熱心人士重新包裝過後的 新版,雖然有點大,不過把常用的都包進去了,應該不會踩到一些陳年老 bug。

下面的 code 還有用到 Apache Commons IO,這裡 可以下載。

private void postData(String url, String filepath, String filename ) throws Exception {
        
        byte[] data;
        
        HttpPost httppost = new HttpPost(url);
        HttpClient httpclient = HttpClientBuilder.create().build();
        
        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        
        InputStream inputStream = new FileInputStream(filepath);
        data = IOUtils.toByteArray(inputStream);
        InputStreamBody inputStreamBody = new InputStreamBody(new ByteArrayInputStream(data), filename);
        
        //entityBuilder.addTextBody("action", "test");
        //entityBuilder.addBinaryBody("file", file);
        entityBuilder.addPart("file", inputStreamBody);

        HttpEntity entity = entityBuilder.build();
        httppost.setEntity(entity);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity httpEntity = response.getEntity();

        String result = EntityUtils.toString(httpEntity);
        Log.d("uploader", result);
        
}

DefaultHttpClient 已經過時了,不建議使用,所以用 HttpClientBuilder 代替。

[Android] 使用 HttpClient post 資料到伺服器

Aviate – 自動分類、偵測地點的啟動器

官方網站:http://getaviate.com/

使用 Android 的好處之一就是可以自由的更換主介面。這邊稱的主介面通常叫做 Launcher,功能類似手機的 shell,提供一些基本的程式管理、widget 顯示、桌面等功能。

大約在一兩年前,我曾經用過一款類似的 launcher,叫做 SlideScreen,其概念跟今天要介紹的 Aviate 雖然有些差距但是畫面的設計上卻是相當類似的。一般的 launcher 都是提供你許多桌面,然後再給一個「所有程式」之類的面板 (還有很炫很炫的動畫),像是 Apex LauncherNova Launcher 等,但是 SlideScreen 不提供一大堆的桌面,反而只提供一個桌面,在桌面上顯示所有你需要知道的訊息,像是簡訊、email、天氣等。如此簡潔的介面深得我心,但可惜的是開發團隊沒有繼續維護下去,在現有的 Android 版本上已經無法使用。

Aviate 這個 launcher 某方面上可以說是擷取了 SlideScreen 的精華,加上時下流行的 LBS 服務,並且又融入了 Android OS 的特點:widgets,做出了這個會自動偵測所在位置、自動分類應用程式的 launcher。

繼續閱讀 “Aviate – 自動分類、偵測地點的啟動器”

Aviate – 自動分類、偵測地點的啟動器