Tuesday, July 17, 2012

about daily scrum

daily scrum在scrum like專案中算是非常基本的動作。
主要用來對所有的專案成員簡報過去一天(不然怎麼稱之為daily scrum)所完成的工作、困難等等
更重要的是簡報本日將會完成的工作項目(不然只報告過去的工作進度,大家怎麼會知道專案啥時間能交付)。
執行daily scrum的時間每人以不超過10分鐘為基礎,如果會有這樣的情況,則不應該在daily scrum的會議上提出,應該另外召集專案成員另外進行討論。

參考資料 Back to Basic : Daily Scrum

Thursday, July 5, 2012

Timer-倒數計時

倒數計時, 除了簡單之外...實在想不出其他的形容詞~
直接進入程式碼看看(下文程式參考於CountDownTimer)


public class TimerDemoActivity extends Activity {

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        tv = (TextView)findViewById(R.id.timer);
     
        // CountDownTimer(倒數計時總長,倒數計時間隔)
        new CountDownTimer(30000, 1000) {

            public void onTick(long millisUntilFinished) {
                tv.setText("seconds remaining: " + millisUntilFinished / 1000);
            }

            public void onFinish() {
                tv.setText("done!");
            }
         }.start();
    }
 
    // 用來呈現的TextView
    private TextView tv = null;
}








MediaPlayer隨寫

總之,Android所提供關於媒體的API都可以在android.media這個package找到
直接進入重點
看看如何用這些個API來撰寫可以播放影音的應用程式
先利用VideoView來簡單的達成這次的目的


先進行layout的準備



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <VideoView
        android:id="@+id/videoView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>


接下來進行程式的撰寫


private VideoView vv = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        vv = (VideoView)findViewById(R.id.videoView1);
     
        vv.setVideoURI(Uri.parse(VIDEO_PATH));
     
        dialog = new ProgressDialog(this);
    }
@Override
protected void onStart() {
super.onStart();
vv.setOnPreparedListener(this);

dialog.show();
vv.start();
}

private ProgressDialog dialog = null;

@Override
public void onPrepared(MediaPlayer mp) {
dialog.dismiss();
}


執行之後就可以看如下的畫面



關於Contacts API

在使用Contacts API之前,首先得設定application的權限
也就是讀取連絡人,就像下面這樣
<uses-permission android:name="android.permission.READ_CONTACTS"/>


接下來讀取ContentProvider當中的連絡人資訊

Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI, null, null, null, null);

最後, 將讀取出的資料放到ListView進行呈現


listView.setAdapter(new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor,
new String[] { ContactsContract.Contacts.DISPLAY_NAME },
new int[] { android.R.id.text1 }));