2012年8月12日 星期日

[ VideoView ] 使用VideoView設計播放影片程式

環境:
eclipse 3.7.2
Android 4.1 SDK (範例使用Android SDK 2.2)

設計步驟如下:
1. File->New->Project
在Application Name欄位中填入videoPlay,連續按下Next鍵3次。
2.把Activity Name欄位改成videoPlayActivity。

3.選擇專案下res\layout下的activity_video_play.xml,先把TextView刪除,並在Palette選擇VideoView控制項,拖移至視窗中。
Layout XML資料如下(紅色字代表新增):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <VideoView
        android:id="@+id/videoView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
</RelativeLayout>

4. 宣告及連繫VideoView物件

package com.example.videoplay;
import android.os.Bundle;
import android.app.Activity;
import android.widget.VideoView;
public class videoPlayActivity extends Activity {
VideoView videoView;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);
        videoView = (VideoView) findViewById(R.id.videoView1);
}
}

5. 建立播放程式

package com.example.videoplay;
import android.os.Bundle;
import android.app.Activity;
import android.widget.VideoView;
public class videoPlayActivity extends Activity {
VideoView videoView;
String videofile = "file:///sdcard/"+"yourvideo.mp4";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);
        videoView = (VideoView) findViewById(R.id.videoView1);
        videoView.setVideoPath(videofile);
        videoView.start();
    }
}

"yourvideo.mp4"記得改成您的影片檔
6. 執行和測式,記得把影片放在SD Card。

2012年8月3日 星期五

讓Android在開機完成時自動啟動程式/服務


在我們所熟悉的Win XP/7 如果要在開機完成後自動執行程式,最簡單的方法就是將程式的圖示放置在"啟動"中,Android則沒有設計類似這樣的功能,如何可以可以在開機後自動執行程式或服務呢?
原理是這樣的;在Android開機完成後,系統會送出一個Broadcast資訊說"系統已經開機完成了" (android.intent.action.BOOT_COMPLETED),而且這個Action只會發送一次。
透過這樣的方式,寫出一個BroadcastReceiver來監聽這個資訊便可以達到自動啟動程式的目的了。

2012年8月2日 星期四

hello-jni 測試

今天休颱風假,測試一下hello-jni,跟大家分享。
測試步驟如下:
1. 匯入hello-jni專案
 2.執行結果
3.新增NDK編譯功能
4. 刪除自動產生的檔案
5. 查看C程式,標示許多錯誤 
 6.在專案檔上按下右鍵,選擇對話盒上C/C++ General->Paths and Symbols
 7. 選擇在cygwin上ndk平台的include目錄  C:\cygwin\home\john\android-ndk-r8\platforms\android-14\arch-arm\usr\include
 8.再看一次C程式,已沒有錯誤
9.修改HelloJni.java程式,呼叫未實現的函式
10.編譯成功
11. 再執行有錯誤
 12. 查看LogCat發現錯誤
 13. 編寫未實現的函式

 14.重新執行

2012年8月1日 星期三

PhoneGap 介紹

在看了老師所寫的 "Web App設計- Web 和Android的互動技巧" 這篇文章,我想到之前接觸到的 PhoneGap 這玩意,也寫出來給各位讀者當個參考。

PhoneGap 是一個開放源碼 (open source) 的 Framework, 以 HTML5 為基礎,可以說是目前跨平台行動開發解決方案的熱門話題之一。經由 PhoneGap 封裝,採用 HTML + JavaScript 的應用程式可以存取不同手機的原生 API。

有興趣的朋友可以由 http://phonegap.com/ 下載最新版本的 PhoneGap,目前的版本是不久前發表的 2.0.0 版。



下載回來後,解開會得像下圖的目錄:


接著可以由 Eclipse 將 lib\android\example 目錄的這個專案載入:


org.apache.cordova.example.cordovaExample 這個專案在模擬器裡執行的畫面,建議可以直接下載到手機上執行,它的範例可以直接控制手機上的感知器。


範例程式所示範的 "Call 411" 這個動作,它會直接呼叫手機的撥號程式,並帶入 411 這個號碼:


PhoneGap 所提供的範例,有幾個主要的目錄及檔案:

  • assets/www/
  • libs/cordova-2.0.0.jar
  • res/xml/

而 Java 程式碼的部份,單純在繼承自 DroidGap 的 Class 裡,透過 loadUrl() 載入 assets/www/index.html 這個主畫面:


import org.apache.cordova.*;

public class cordovaExample extends DroidGap
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }
}