▼Androidメモ▼
スクリーンセーバー(Daydream)

スクリーンセーバーとなるプログラムを作成する。
 


ソースコード
DreamEx.java
package net.npaka.dreamex;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.service.dreams.DreamService;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;

//スクリーンセーバー(Daydream)
public class DreamEx extends DreamService {
private TextView textView;

//ウィンドウに取り付けた時に呼ばれる
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();

//入力イベントを受け付けるかどうかを指定
setInteractive(false);

//フルスクリーンにするかどうかを指定
setFullscreen(false);

//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
layout.setBackgroundColor(Color.BLACK);
layout.setGravity(Gravity.CENTER);
setContentView(layout);

//テキストビューの生成
textView=new TextView(this);
textView.setTextSize(100);
textView.setTextColor(Color.WHITE);
layout.addView(textView);

//現在時刻の更新
updateCurrentTime();
}

//開始時に呼ばれる
@Override
public void onDreamingStarted() {
super.onDreamingStarted();

//時間経過のブロードキャストレシーバーの登録
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_TICK);
registerReceiver(receiver, filter);
}

//停止時に呼ばれる
@Override
public void onDreamingStopped() {
super.onDreamingStopped();

//時間経過のブロードキャストレシーバーの解除
unregisterReceiver(receiver);
}

//ウィンドウから取り外した時に呼ばれる
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
}

//現在時刻の更新
private void updateCurrentTime() {
SimpleDateFormat dateFormat=
new SimpleDateFormat("HH:mm",Locale.JAPANESE);
textView.setText(dateFormat.format(new Date()));
}

//時刻経過のブロードキャストレシーバー
private final BroadcastReceiver receiver=new BroadcastReceiver() {
//時刻経過時に呼ばれる
@Override
public void onReceive(Context context,Intent intent) {
updateCurrentTime();
}
};
}

AndroidManifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.npaka.dreamex"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<service
android:name=".DreamEx"
android:exported="false" >
<intent-filter>
<action android:name="android.service.dreams.DreamService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>

</application>

</manifest>


−戻る−