2016年7月20日 星期三

[Android]時間倒數countDownTimer

今天在開發時,需要製作一個倒數的功能
在以前開發時我總是使用Timer or Runnable去手動開發倒數功能


結果今天居然讓我意外發現了原本Android就有個類別是倒數功能

就是--
CountDownTimer 

而且這個class還是android api 1就有了...身為android開發者還真是慚愧居然不知道這個類別

使用方法大致是這樣(官方範例)

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();


參數也非常簡單

CountDownTimer(long millisInFuture, long countDownInterval)


millisInFuture-總共倒數時間

countDownInterval-倒數間隔時間


然後實作兩個方法
onTick -倒數時做的事情
onFinish-倒數結束時的事情


是不是很方便阿~

最後附上官方說明:
https://developer.android.com/reference/android/os/CountDownTimer.html

2016年7月12日 星期二

[Android]Google play 上架,應用程式更新遭到拒絕

今天在上架Android apk新版本時候遇到了

應用程式更新遭到拒絕:
您的 APK 含有安全性漏洞,此舉違反惡意行為政策,因此遭到拒絕。如果您提交的是更新版本,那麼前一個應用程式版本仍會保留在 Google Play 商店中。


上架過這麼多android app了,還是第一次遇到被退貨的apk...

在經過查詢之後才發現,原來是之前webview 忽略 ssl ,被google說是安全性漏洞了,那裡的確是為了測試方便,不過居然被退貨還真是神奇(?)

後來將webview的這裡:

    @Override
      @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                 handler.proceed();
            }


拿掉之後,再重新送審

果然就成功上架了....沒想到google 還真的是有在審查app呀..


2016年7月8日 星期五

Android Fragment in Viewpager 避免初始化 onResume

在開發Android 的過程中,常常會使用到viewpager來幫助開發

但有時候又希望viewpager 裡面的 fragment 不要在一開始setAdapter時就加載。

因為如果fragment裡面,我們做了許多的網路API request,或是圖片的加載,那麼如果fragment的數量多,就會讓使用者等很久

所以在拜過Google 大神後,發現到 viewpager 會手動調用 fragment裡面的public void setUserVisibleHint(boolean isVisibleToUser) 方法,

這個方法很好理解,
就是當我們滑動到某一個fragment,或是 viewPager.setCurrentItem(n)時,就會調用到這個方法

所以我們可以將這個方法看成:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            // fragment onResume
        } else {
            // fragment onPause
        }
    }


這樣是不是很簡單呢~~

2016年5月6日 星期五

[Android]Google Analytics 8.3.0 conflict 版本衝突

昨天在公司幫忙將專案加入GA時
我照著Google 官方說明一步一步加上去時 官方範例點我
發現怎麼加上dependencies後

compile 'com.google.android.gms:play-services-analytics:8.4.0'

在compile 整個project 時,總是會出現錯誤訊息

Please fix the version conflict either by updating the version of the google-services plugin.

後來搞了老半天,終於發現也有人有相同的問題

起初我一直以為是我的其他lib裡面的google service 版本與8.4.0版的analytics衝突了,結果原來問題在於需要把

apply plugin: 'com.google.gms.google-services'

擺到整個build.gradle檔案的最下方,這時才可以正常compile
整個是很無言阿,在終於加入GA後,另一個問題又來了

當我trackScreen之後,我查看logcat是否有正常將訊息回傳至Google service上,結果居然跟我說

W/GAv4(10565): AnalyticsReceiver is not registered or is disabled. Register the receiver for reliable dispatching on non-Google Play devices. See http://goo.gl/8Rd3yj for instructions.

W/GAv4(10565): AnalyticsService not registered in the app manifest. Hits might not be delivered reliably. See http://goo.gl/8Rd3yj for instructions.

什麼阿!!這到底是什麼鬼..以前加GA不是很簡單嗎?
只要google play service的jar檔有加到lib當中,在將key丟入code中不是就可以用了?後來還多了一個需要放入configuration file,這個又還好,因為官方上就有很明確的跟我說要放了

但以前都不用放receicer才對阿...什麼時候又改的
於是我又詢問了google ,才終於找到答案

現在必須要在AndroidManifest.xml當中加入

        
        
            
                
            
        
        

        
        
            
                
            
        
          

這才終於解決了加GA這件事,真是花了我不少時間阿...

2016年4月10日 星期日

[日本]北陸六日遊 DAY6 三之町古街, 白川鄉合掌屋, 小松機場

20160404

最後一天在日本的早晨,一樣是從房間往外拍出去的景色



早餐一樣是BUFFET,但每天都吃太多所以越吃越少,右上角那個粥是酸的,對我來說覺得好難吃哦...


飯店內也一樣在賣飛驒牛禮盒

一樣一定要有的飛驒寶寶


昨天住的飯店牌子,準備離開前往今天第一站

今天的第一站,來到上三之町古街,這裡有好多好多的倉庫都是擺放著他們祭典時的轎子,感覺祭典時一定很熱鬧,有機會真想參加看看他們的祭典呢!

導覽圖



這顆球不知道是做什麼的,忘了

街內景色



這間賣味曾得看起來就很好吃,所以我們家也有買了兩包,放冷藏可以放一年哦!



高山陣屋,本來行程是寫,如果不能滑雪就來這,我們後來也有自己買票進去看,只能說,導遊改成帶我們去名古屋城看櫻花真是太美好了...



今日午餐--
怎麼覺得越來越簡單(?)

 這裡的頂級飛驒牛壽司聽說超好吃,但一貫1000日幣..我真的吃不下去阿!!

結束後來到本次行程重點中的重點,白川鄉合掌屋
這個部落的屋頂都是用稻草做的,聽說大約30年換一次,屋頂非常厚,看起來很壯觀,也會看到很多存放預備稻草的倉庫


這裡的水一樣很清澈,聽說這裡的居民都會將鮭魚養在水溝內,是要給他們自己吃的,但我覺得以前可能真的是這樣,現在感覺比較像是只剩幾家觀賞用的






結束白川鄉,也代表結束這次的日本6日遊了,準備前往小松機場!

下面牌子要來日本前就看過了,是日本小松機場內貼的對三個國家不同的印象代表

這張居然晃到了..
台灣代表的是小籠包還有..居然忘了其他兩個是什麼

對上海的印象

對韓國的印象

下面是小松機場免稅店,果然像網路上的敘述一樣,雖然小松機場就只有這一家免稅店,但真的是麻雀雖小,五臟俱全阿...舉凡化妝品、零食、電鍋、保溫瓶(象印)、生活用品、菸酒通通有!

要回台這天,在小松機場居然延誤了一小時阿..,原因是因為桃園機場流量管制導致我們在免稅店多花了很多錢買東西,因為多出來的一小時實在不知道要做什麼,免稅店又只有這家





經過這次的日本行,雖然不是第一次來日本了,但還是覺得日本的生活品質很不錯,乾淨、有禮貌的確是名不虛傳阿,有機會一定還是會再來日本玩的~



2016年4月8日 星期五

[日本]北陸六日遊 DAY5 大王山葵WASABI農場,平湯瀑布,新穗高纜車,GRANTIA高山

20160403
早上一起床,映入眼簾的景色是昨晚看不清楚的滑雪場,還是好美阿,吃完早餐就跑出飯店外去晃晃


從房間窗外拍出去的滑雪場

準備可以休息的剷雪機



接著前往今天的第一站,大王山葵WASABI農場



還是第一次到這麼一大片的wasabi
這裡的水都是非常的乾淨,因為要有很乾淨的水源才可以種出品質好的wasabi


來這裡一定要嘗一下這裡特別的wasabi冰淇淋囉,日本真的是很多地方都有在賣各式各樣的冰淇淋耶!
這個wasabi冰淇淋是用wasabi的葉子去做的,所以只會有wasabi的風味,不會嗆辣,一般我們吃的wasabi都是它的根,那才會辣辣的

冰淇淋吃起來還滿好吃的,不過多少我忘記了,好像也是100多台幣吧(?)




晃完wasabi農場,時間很快的又要前往吃午餐拉
今天的午餐是在飛驒區吃的,也是屬於偏簡單的午餐,日本人白飯總是喜歡配醃製物,實在是吃不習慣他們的醃製物阿~


飛驒區的吉祥物,飛驒寶寶~

來之前就有看過人PO過這個肉包了,這個是飛驒牛肉包,個人覺得非常好吃,尤其我還是在剛吃完午餐的情況下吃的,依然好吃阿~

好多好多的飛驒寶寶

用完餐之後,前往下一站,平湯瀑布,據說這個瀑布,是以前日本的打戰的武士,因為發現突然有一隻白色猴子出現在他們面前,然後武士很好奇,就跟著猴子過去,結果發現了很多猴子都在泡溫泉,而這個瀑布就在旁邊~所以這裡也是溫泉區阿~




來這時依然是滿滿的積雪,配瀑布還是很美,如果是冬天來時,反而可能還走不進來看瀑布呢!



 瀑布結束後就前往本次行程的重點之一,新穗高纜車,這裡是號稱日本的北阿爾卑斯山,冬天都是狂風暴雪阿~
這裡的纜車分成兩段,第一段纜車可以坐到海拔1308M,而第二段就可以到頂部-海拔2156M




票都是來回票,可要好好保管不要弄丟了


去的時候上面大概是1度左右,不過現在都已經春天了耶,還這麼低溫







在看完山頂後做到第一段的地方,有泡腳區可以泡腳




覽車外面一樣有賣這裡的名產,飛驒牛,這間主打牛肉串,當然一定要買來吃吃看,不過一串500日幣也是...好貴


這間店旁邊還有賣溫泉蛋

吃完感想..有點普通,吃過一次就好..

纜車結束後,今天也又過的差不多了,前往飯店拉..
今天住在 GRANTIA高山 飯店

這間的晚餐螃蟹可以吃到飽~菜色也還算可以
房間就,還好說高級也普通,說爛也不爛,算是中等