送給老婆的情人節禮物——一個Android程序

前天是情人節,雖然結婚好多年瞭,但是老婆一直都喜歡驚喜的浪漫,可惜我卻是個木訥的呆子,做不出那些轟動的事情。那天下午馬上就要下班回傢瞭,突然在微博上看到有人談到geek的情人節禮物,雖然我不是geek,但是最近在學Android,老婆的手機也是Android系統的,何不專門做個程序給她?
 
想法可嘉,但是動起手來卻不是那麼回事。學瞭那麼多天,真正派上用場的還沒學到。時間隻剩下不到一個小時瞭,我會的隻是在屏幕上顯示幾個大字:XXX,我愛你!
 
後來想想似乎太單調,如果能夠加上點背景音樂可能好點,但是還沒學會怎麼使用,上網搜瞭一下,幸好很簡單,用MediaPlayer就可以瞭,幾條語句就能搞定。音樂文件怎麼來呢?通過網絡在線播放是最簡單的,於是就到百度MP3搜瞭一下“情人節快樂”,我記得有一首歌裡面一直在喊“情人節快樂”的,結果最後發現那首歌名字叫《沒有情人的情人節》……
 
算瞭,管它呢,有老婆就行瞭,www.aiwalls.com 沒有情人照樣過情人節,打開發現鏈接居然是百度的,以前百度不是說它隻負責搜索,不負責存放嗎,怎麼現在的MP3都放在百度的服務器瞭?把鏈接復制下來,在模擬器上運行還是挺好的,因為它用的是電腦的寬帶,呵呵。不過過瞭一會提示下載失敗,把那個地址往瀏覽器一貼,果然打不開瞭,原來百度這種下載鏈接是有有效期的,隻能讓你試聽一下,然後下載,不是長期有效的。這就麻煩瞭,到時候裝在手機上沒聲音豈不是很糗?
 
再搜索一下,還好,可以把MP3文件放在assets裡面,發佈程序的時候把它包含在apk裡面就行瞭,不用聯網瞭。
 
現在可以在顯示大字的同時播放《沒有情人的情人節》www.aiwalls.com瞭。看瞭一下效果,還是有點怪異,手機的狀態欄和程序的標題跟黑色的背景,紅色的大字似乎不太搭配,於是繼續搜索全屏代碼,哈哈,兩句搞定,這樣炫多瞭。
 
不過一直看著那幾個字沒任何反應,似乎太單調瞭,於是就想讓它們不斷變色,或者動一下也好,但是無論怎麼弄都搞不定,下班時間到瞭,要去接老婆瞭,就這樣吧。
 
之前都是在模擬器上運行,或者接個USB在手機上運行,還不知道怎麼打包成apk呢,這下居然沒搜索到,可能太簡單瞭,大傢都沒說。於是在項目上點右鍵,果然看到導出apk的菜單,我選擇瞭unsigned方式導出,在手機上居然安裝不瞭。再搜索一下,哦,原來是要導出成signed apk才能裝的,但是我沒有證書,怎麼signed呢?沒想到ADT還可以生成證書,一下就搞定瞭,這比Symbian那種簽名簡單多瞭,但是可能也是導致Android惡意軟件泛濫的原因之一。
 
去接老婆的時候通過藍牙把apk發到她手機上,裝上,運行,從她表情上看出,我的努力沒有白費。不過最後還是發現瞭個嚴重的bug,那首歌還沒放完,另外一個聲音已經重新開始瞭,形成瞭“二重唱”的效果,而且程序退出之後還在唱,趕工造成的悲劇啊。
 
下面是代碼:
 public class LoveActivity extends Activity {
     TextView text;
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
         WindowManager.LayoutParams.FLAG_FULLSCREEN);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.main);
         MediaPlayer mp = new MediaPlayer();
         try{
             AssetManager assetManager = getAssets();
             AssetFileDescriptor afd = assetManager.openFd("a.mp3");
             mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
             mp.prepare();
             mp.start();
         }
         catch (Exception e) {
             e.printStackTrace();
         }
     }
 }main.xml:
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
     <TextView
     android:id="@+id/textView1"
     android:text="@string/loveyou"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center"
     android:textColor="#ff0000"
     android:textStyle="bold"
     android:textSize="50dip"
     />
   
  
 </LinearLayout>strings.xml:
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="hello">Hello World, LoveActivity!</string>
     <string name="app_name">Love</string>
     <string name="loveyou">XXX\n我愛你</string>
 </resources>再把那首mp3放到assets裡,改名為a.mp3即可。
 
 
摘自amp@java
 

發佈留言