取得所在(預設)地點的貨幣

這篇還是還是匯率相關XDDD

在實作匯率App時,我想讓App預先載入使用者最常使用及查詢的貨幣,讓使用者有比較好的UX,只是到底怎麼定義使用者最常使用及查詢的貨幣,讓我有點傷透腦筋。



使用者最常使用及查詢的貨幣?

一開始,是有想說透過GPS取得使用者所在位置,然後取得所在位置的幣別,作為最常使用的貨幣,想說你都在當地應該會用那邊的貨幣吧?

只是如此一來在OnCreate要作的是就會很繁重,要取得位置及幣別,還要取得即時匯率,應該會被ANR(Application Not Responding),而且我覺得匯率換算App跟使用者要位置的權限也頗奇怪。

最後是採用了所在(預設)位置,就是一開始在設定手機時,所選擇的國家(位置),然後取出它的幣別,當作我的預設幣別。

另外一方面,最常查詢的貨幣也是頗令人頭痛的東西。

原本是想說,有沒有辦法在得知預設幣別後,去找出這個國家最常兌換的貨幣,例如台灣最常查詢日幣、美金、人民幣…,只是servey不到可用的API,所以目前只好先寫死固定的貨幣,之後再來修正吧QAQ



取得所在(預設)地點的貨幣

在這邊使用了兩個類別,分別是LocaleCurrency

Locale represents a language/country/variant combination. Locales are used to alter the presentation of information such as numbers or dates to suit the conventions in the region they describe.

語言環境(Locale) 代表一個語言/國家/variant 組合。這三個參數足夠的資訊來描述該地區的語言文化及行為。不過說是這說,我有點搞不清楚最後的variant是在描述哪一部分,在Android官網中是給了這樣個範例:

new  Locale("en", "US", "POSIX")

先不管variant的部分,目前我想取出的是國家這項資訊:

  1. 取出預設位置

    // 取得預設的語言環境
    Locale mDefault = Locale.getDefault()
    // 取得目前使用語言
    String mLanguage = Locale.getDefault().getLanguage();
    // 取得目前國家區域
    String mCountry = Locale.getDefault().getCountry();
    
  2. 取得該位置所對應貨幣代碼
    Currency中提供了一個function,可藉由傳入Locale參數取得到該Locale國家所對應的貨幣,一旦得知該貨幣,就可取出得該貨幣的代碼

    // 藉由所取得的預設local,得到所對應的 Currency	
    Currency curr = Currency.getInstance(mDefault);
    // 取出該 Currency 所對應的ISO 4217 currency code
    String code = curr.getCurrencyCode()
    



這個網誌中的熱門文章

Genymotion 模擬器安裝篇:In ubuntu14.04 LET