【转载】在 Android 上更改與取得系統時區及時間
来源:互联网 发布:蒙牛和伊利 知乎 编辑:程序博客网 时间:2024/05/22 06:49
最近正在寫一個世界時鐘的程式,期間遇到幾個問題,花了好些功夫,還是沒有得到滿意的答案。分享出來,給其他遇到相似問題的網友,也看看有誰知道答案的。
取得系統時間
要得到目前的時間,這個倒是很容易,就是 System.currentTimeMillis()。不過要注意的是,這個函式傳回的是 UTC(GMT) 這個時區的時間,像台灣所在的時區是 UTC+8,你得將這個函式所傳回的值再加 8個小時,才是你要的答案。實際上,當然不用自己加,你可以借用 Calendar 這個類別來幫你。
更改系統時間
要更改系統的時間,這可就難倒我了。在 m5 SDK 上,用SystemClock.setCurrentTimeMillis(),雖然會有警告訊息,不過系統時間還是會被更改。到了 v0.9SDK,這招就沒效了。掃過 Android 的原始程式,他們的確是用這個函式在更改系統時間。可是在我的程式裡,不管我加了那些permission,都是給我個 Permission denied 錯誤。最好,只好在 這裡 發文問了這個問題,有個應該是 Google 的工程師,給了下面這個答案。
User apps cannot set the time. Only the system processes can. Thisis for security, but also because it won't have much effect--the timeis reset from the radio via network time.
看了,要在 application 這一層更改系統時間,應該是沒解了。如果有人知道其他答案的,幫忙解答一下。
取得與更改系統時區
用 TimeZone.getDefault() 就可以取得當前的時區,如果你沒有特別設定的話,那你取到的,都是 GMT這個時區。看起來,至少在 Windows 平台上, Android Emulator還是不會正確決定當前的時區。目前我知道的唯一方法就是,在啟動 Emulator 的參數上,加上 -timezone"Asia/Taipei"。透過啟動 Emulator 的參數可以更改時區,那可以透過 API 來更改系統時區嗎?我試過TimeZone.setDefault(TimeZone.getTimeZone("Asia/Taipei")),也用過System.setProperty("user.timezone","Asia/Taipei"),沒一個有效。所以看起來,也暫時無解。有誰知道如何透過 API 更改系統時區?
- 【转载】在 Android 上更改與取得系統時區及時間
- Android--取得控件在手机屏幕上的位置
- 在git上取得源码
- 更改移植coco2dx在android上的项目图标
- 在VMWare上安装ubuntu及VMWare Tools(转载)
- Android网络优先级及更改
- Android网络优先级及更改
- 在Linux上取得Windows上的文件
- Android取得程序包名及Activity信息
- 在mac上更改文件关联
- 【android】在eclipse中更改应用包名及源码包名
- Android Studio 上 更改SVN地址
- 跨平台wxWidgets在windows及linux上的开发环境搭建(转载)
- 在Remoting Server上取得Remoting Client的IP地址
- 新建网站如何在GOOGLE上取得好排名
- 如何取得鼠标在网页上的位置
- unity3d在android上播放视频及remote的使用
- android studio在mac上的安装过程及问题解决
- Google Adsense api 推荐介绍 ~!没有网站照样赚钱!
- 套接字模式—非阻塞模式开发(1)
- GNU Make手册阅读笔记(8)-- 第九章
- windows 上启用当前进程的用户调试权限
- 才写的J2ME手机游戏泡泡堂源码
- 【转载】在 Android 上更改與取得系統時區及時間
- 按钮检测
- 很久没写CSDN了,
- 七段数码管显示控制 (4个数码管)
- 开始写学习博客啦~!
- 唉。。。。
- 学习FLASH驱动之中间层函数
- LCD显示
- Google hack