报数程序 NumReader

想要一个简单的报数程序,就是1.2.3.4.5..数数...

但网上找了半天,竟然找不到一个合适的..

算了,还是自己写一个吧~

package com.liz;


import java.util.Timer;
import java.util.TimerTask;


import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.util.Log;


public class NumReader {


public static final String TAG = "NumReader";

public static final String SP_SETTINGS = "SharedPrefSettings";
public static final String SP_TIME_SPAN = "SharedPrefCountTimeSpan";
public static final String SP_READ_SPAN = "SharedPrefCountReadSpan";
public static final int DEFAULT_TIME_SPAN = 1;  //default time span(seconds) to count once
public static final int DEFAULT_READ_SPAN = 5;  //default span to read once


public static int mTimeSpan = DEFAULT_TIME_SPAN;  //how many seconds to count once
public static int mReadSpan = DEFAULT_READ_SPAN;  //how many count to read once

//constants
public static final int TIMER_DELAY = 0;
public static final int TIMER_EVENT = 1;


//variables
private static Timer mCountTimer = null;
private static int mTotalCount = 0;

private static Handler mUIHandler = null;
public static void setUIHandler(Handler handler) {
mUIHandler = handler;
}

public static void init(Context context) {
SharedPreferences spSettings = context.getSharedPreferences(NumReader.SP_SETTINGS, Context.MODE_PRIVATE);
mTimeSpan = spSettings.getInt(NumReader.SP_TIME_SPAN, NumReader.DEFAULT_TIME_SPAN);
mReadSpan = spSettings.getInt(NumReader.SP_READ_SPAN, NumReader.DEFAULT_READ_SPAN);

SoundPoolPlayer.init(context);
}

public static void release() {
stop();
SoundPoolPlayer.release();
}


public static void start() {
if (mCountTimer != null) {
Log.w(TAG, "timer alreay start");
} else {
mCountTimer = new Timer();
mCountTimer.schedule(new MyTimerTask(), TIMER_DELAY, mTimeSpan*1000);
}
}


public static void stop() {
mTotalCount = 0;


if (mCountTimer == null) {
Log.w(TAG, "no timer to stop");
} else {
mCountTimer.cancel();
mCountTimer.purge();
mCountTimer = null;
}
}

public static String getFormatTimeStr() {
int secondCount = mTotalCount * mTimeSpan;
int hour = secondCount / (60 * 60);
int minute = (secondCount - hour * 60) / 60;
int second = secondCount - hour * 60 * 60 - minute * 60;


String strHour = "" + hour;
if (hour < 10) {
strHour = "0" + hour;
}
String strMinute = "" + minute;
if (minute < 10) {
strMinute = "0" + minute;
}
String strSecond = "" + second;
if (second < 10) {
strSecond = "0" + second;
}


return strHour + ":" + strMinute + ":" + strSecond;
}

public static int getCount() {
return mTotalCount;
}

private static class MyTimerTask extends TimerTask {  
    public void run() {  
Message message = new Message();
message.what = TIMER_EVENT;
handler.sendMessage(message);
    }  
};  


final static Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TIMER_EVENT:
onTimerEvent();
break;
}
super.handleMessage(msg);
}
};


public static void onTimerEvent() {
mTotalCount++;
mUIHandler.sendEmptyMessage(0);

if (mTotalCount % mReadSpan == 0 && mTotalCount != 0) {

        new Thread(new Runnable() {  
            @Override  
            public void run() {  
    SoundPoolPlayer.playNumberString(mTotalCount);
            }  
        }).start();
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值