發表文章

目前顯示的是 2016的文章

Notification 改新寫法

Notification Noti=new Notification(); Intent i = new Intent(this, MainActivity.class);    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);               Noti.icon =   R . drawable . notification_icon ; // notification icon id Noti.tickerText=mc.getResources().getString(R.string.app_name); Noti.when=System.currentTimeMillis();      Noti.flags=Notification.FLAG_ONGOING_EVENT;     // setLatestEventInfo 已被放棄 Noti.setLatestEventInfo( mc, mc.getResources().getString( "My notification" ), mc.getResources().getString( "Hello World!" ) , PendingIntent.getActivity(this, 0,i, 0) ); NotificationManager myNM = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); myNM.notify(0,Noti); 改成如下 NotificationCompat . Builder mBuilder =         new NotificationCompat . Builder ( this )         . setSmallIcon ( R . drawable . notification_icon )         . setCont

android studio signed apk

圖片
有時候我們會希望每次編譯出來的 apk 都是有 sign 過的,Android Studio 提供了這樣的選擇。 方法如下,當然也可以直接在Gradle中寫好。 不過我們還是用用圖形介面比較方便。 一、點擊左下方的Build Variants,會跳出側邊欄位如下。在跳出來的欄位裡面Build Variant中選release。 二、我們到app資料匣,點右鍵,選Open Module Settings。如下 三、先選Signing,自己新增一個認證。 Name,key Alias,key Password, Store File, Store Password, 這幾項都填一填。 四、再選Build Types, 先選release ,在 Signing Config 中選第三個步驟中自己新增的認證,剛剛的 Name 會出現在下拉選單中。 五、最後,按OK。這樣就大功告成。接下來每次編譯就會直接給出 sign 過的 apk。

android studio 查看繼承的原始碼

圖片
Navigate  menu >  Type Hierarchy 出現如圖。就可以點進去看每個繼承的原始碼。

Unsupported major.minor version 52.0 報錯

其一 一般來說,Unsupported major.minor version 52.0出現時,為什麼會有這個錯誤呢?這是java版本的問題,52.0是主要版本號.次要版本號(major.minor)。每一個被編譯程式都會有其適用的版本號的資訊,可以用 javap -verbose XXXX 就可以看到適用的版號。如果不是目前JDK的適用範圍,當我們執行時就會出錯了。 我們可以在terminal中打上 java -version 看看目前的java 版本 要轉移平台或環境,確認版本有其必要。 我們可以先用 jdk 1.8 編釋一個小程式,然後再把jdk換成1.7執行看看,就會出現 Unsupported major.minor version 52.0 所以我們可以在 https://en.wikipedia.org/wiki/Java_class_file#General_layout 找到各版本支援的版本號,這樣就不會弄錯了。簡單記錄一下。 java SE 9 = 53 (0x35 hex), Java SE 8 = 52 (0x34 hex), Java SE 7 = 51 (0x33 hex), Java SE 6.0 = 50 (0x32 hex), Java SE 5.0 = 49 (0x31 hex), JDK 1.4 = 48 (0x30 hex), JDK 1.3 = 47 (0x2F hex), JDK 1.2 = 46 (0x2E hex), JDK 1.1 = 45 (0x2D hex). 其二 在android studio上可能就是compileSdkVersion跟buildToolVersion版本有所不同。如下,將兩者改為一樣的版本 24,問題即可解決。 android{ compileSdkVersion    24 buildToolVersion         24.0.1

Element animation-list must be declared 報錯

Element animation-list must be declared Android Studio 對於資源的放置位置有比較嚴重的定義。原先 <? xml version= "1.0" encoding= "utf-8" ?>   <animation-list android :id= "@+id/find_people_anim"   android :oneshot= "true" xmlns: android = "http://schemas.android.com/apk/res/android" > <item android :drawable= "@drawable/findpeople1" android :duration= "500" />    <item android :drawable= "@drawable/findpeople2" android :duration= "500" />    <item android :drawable= "@drawable/findpeople3" android :duration= "500" />    <item android :drawable= "@drawable/findpeople4" android :duration= "500" />   <item android :drawable= "@drawable/findpeople5" android :duration= "500" /> </animation-list> 這個資源都是放在anim的資料匣下,這樣是不行的。所以改放在drawable下,即可解決。

Firebase 與 AdMob

圖片
啊!平台跟通路真的是王道啊!叫你往東,就得往東。 從eclipse轉到android studio看樣子是在所難免。連analytics, admob也都跟firebase整合了。也就是說未來轉到firebase也是在所難免。不過也有好處,整合的功能不少。有空就一一來寫。 如果是要結合admob https://firebase.google.com/docs/admob/android/quick-start 我們重點的跑一遍 第一點改 App - level build.gradle 第二點改 Project-level build.gradle       第三點找出 本來ADMOB的廣告單元編號,記得要先跟firebase連結,就會出現最下方的廣告單元編號與舊版發佈商編號。 在參閱設定操作說明中有 應用程式編號 ,我們可以看到後面xxxxxx~nnnnnnnn有一個 ~ 的符號。 廣告單元編號 是xxxxxxx/nnnnnnn有一個 / 的符號。不要搞混了。 提醒使用者要一個activity就申請一個廣告單元。  貼心提示使用者可以把很多的id都放在resource中,如下  第三點,程式跟之前大同小異 重點是呼叫廣告前要先執行  MobileAds.initialize....如下,記得後面的編號是  應用程式編號!! 然後在xml中,廣告編號可xml中加,也可以在 activity 中  A dView.setAdUnitId( "ca-app-pub-2831471Xxxxxxx/9nnnnnnnn" );    或從resource中 ADView.setAdUnitId(getString(R.string.XXXXX)); 主程式 這樣就可以了…我還有遺漏什麼…咦… 對…json 先到 firebase console     https://console.firebase.google.com/ 照指示新增,或是匯入google應用,就可以看到如下 選擇紅框中->管理 下載google-services.json, 將

finished with non-zero exit value

又來了... finished with non-zero exit value 1 這個容易解,從錯誤訊習中可以找到問題。 finished with non-zero exit value 2 從eclipse轉到android studio容易發生,這個是jar的衝突。即然用了gradle來編譯程式,就要把libs中的jar通通砍了。 finished with non-zero exit value 3 記憶體不足。用這個 android { // Other stuffs dexOptions { javaMaxHeapSize "4g" } }

討厭… ADB not responding. You can wait more,or kill “adb.exe” process manually and click 'Restart'

圖片
google 今年又發表了很多新東西,使得原本使用eclipse的人慢慢的要轉移平台到android studio來。一開始就遇 adb 的問題,然後android studio提示要kill adb,如下 看過網路上的諸多作法,adb kill-server,然後 adb start-server。只要看到出現訊息 daemon started successfully,就成功了。 如果不是呢?出現 WSAPOLL找不到輸入點之類的,就找一版舊的adb.exe來把android studio所使用的 adb.exe 取代掉即可。 突然想到在c糟中還有一份android-adk,趕快去找 android-sdk 底下的 platform-tools底下的adb.exe。直接copy,然後取代了android studio的adb.exe… 終於解決。

Pokemon Go

圖片
任天堂總是十年磨一劍… Pokemon Go這個遊戲正在改變世界啊! 想當初還一堆人質疑手遊的未來,終於在人類的創意下,還是開發出讓所有人都掉下巴的遊戲了。手遊的特色是無時無刻都可以玩。洗澡能玩,上廁所能玩,吃飯能玩,等公車能玩,還有開記者會時也能玩! 大意就是發言人發言時,下面的記者正在努力的玩pokemon go,發言人就問他你正在玩pokemon go嗎? 記者:我只是看一下。 發言人最後再問,你有抓到嗎? 記者:沒,這裡訊號不好。 發言人說,我為此抱歉。 整個過程,看不出發言人是不是在生氣。但生氣又如何?不生氣又如何?反正就是大家都要玩pokemon go,連白宮都被佔領了。 這個遊戲真得在改變世界啊!