�@AppWidget���w�肵���Ԋu���ƂɎ��s����ɂ́Aandroid:updatePeriodMillis��p���鏈�����@������܂��B�T���v���́uSlideShow�v�Ƃ����E�B�W�F�b�g�����̕��@��p���Ă��܂��B
�@�\�[�X�R�[�h�́A�ȉ��̂悤�ɂȂ��Ă��܂��B
public class SlideShow extends AppWidgetProvider { static int index = 0; int[] images = { R.drawable.g0, R.drawable.g1, R.drawable.g2, R.drawable.g3, R.drawable.g4, R.drawable.g5, R.drawable.g6, R.drawable.g7, }; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.slide_show); remoteViews.setImageViewResource(R.id.ImageView01, images[index]); index = ++index % images.length; ComponentName thisWidget = new ComponentName(context, SlideShow.class); appWidgetManager.updateAppWidget(thisWidget, remoteViews); }
�@�܂��A�K�v�Ȃ̂�AppWidgetProvider�N���X���p�����č��Ȃ���Ȃ�Ȃ��Ƃ������Ƃł��B�����āA�J��Ԃ��Ăяo�����onUpdate()���\�b�h���I�[�o�[���C�h����K�v������܂��B
�@����Ă��邱�Ƃ́AonUpdate()���\�b�h���Ăяo����邽�тɁA���\�[�X���̉摜��RemoteVies�N���X���o�R���ď��Ԃɐݒ肵�Ă��܂��B�摜���w�肷��index���Ȃ�static���Ƃ����ƁAonUpdate()���\�b�h���Ăяo����邽�тɁA���̃N���X�̃C���X�^���X���Đ�����������߂ł��B
�@�ʏ�́A�R�[���o�b�N���\�b�h�ł͂��������������͍s�킸�ɁA�T�[�r�X���N�����āA�T�[�r�X���ŏ������s���悤�ɂ��܂��B�T���v���́uWhatTimeIsItNow�v�Ƃ����E�B�W�F�b�g���T�[�r�X��p����ł��ȒP�ȗ�ł��B
�@�\�[�X�R�[�h�́A�ȉ��̂悤�ɂȂ��Ă��܂��B
public class WhatTimeIsItNow extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Intent intent = new Intent(context, MyService.class); context.startService(intent); } public static class MyService extends Service { @Override public void onStart(Intent intent, int startId) { RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.what_time_is_it_now); remoteViews.setTextViewText(R.id.TextView01, new Date().toLocaleString()); ComponentName thisWidget = new ComponentName(this, WhatTimeIsItNow.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); manager.updateAppWidget(thisWidget, remoteViews); } @Override public IBinder onBind(Intent intent) { return null; } } }
�@onUpdate()���\�b�h�̓T�[�r�X���N�����邾���A�N�����ꂽ�T�[�r�X�͎��s�㑦�I�����܂��B�������y���Ă��d���Ă��A��ɂ��̂悤�ɃT�[�r�X���N�����ď���������̂��]�܂����ł��B���̃T�[�r�X��AndroidManifest.xml�ɓo�^����Ă��Ȃ���Ȃ�܂���B�T�[�r�X�̓o�^���@�́A�A�ڑ�7��́u�T�[�r�X���g�p���邽�߂̐ݒ��v���Q�Ƃ��Ă��������B
�@���āAWhatTimeIsItNow�́A�z�[���X�N���[����1�b���݂̃f�W�^�����v��\������E�B�W�F�b�g�ł����A����ȃE�B�W�F�b�g�����̂͂����߂ł��܂���B
�@����3�D��4�D�͑傫�Ȗ��ł��B
�@�O�[�O�������J���Ă���T���v���́A1��1���C���^�[�l�b�g�Ɂu�����̌��t�v�����ɂ����Ă����\������E�B�W�F�b�g�ł��B�m����1��1�炢�ł���A�܂��������ɂȂ�Ȃ��̂ŁA����android:updatePeriodMillis��p����̂ł���A�����Ă�1���Ԃ�1�炢�̍X�V�p�x�Ɏ��߂�̂��悢�̂ł͂Ȃ����Ǝv���܂��B
�@android:updatePeriodMillis�ȊO�̕��@�Ƃ���AlarmManager��p������@������̂ŁA��������́AAlarmManager�̎g������������܂��B
�@android:updatePeriodMillis��AlarmManager�ɒu�������郁���b�g�͂���������܂��B
�@�v����ɁA�ݒ�t�@�C���Ɋ��Ԃ��w�肷��ƁA�R�[�f�B���O�͕K�v�Ȃ����Ǎׂ�������͕ύX�ł����AAlarmManager���g�p����ƁA�R�[�f�B���O�͕K�v�����Ǎׂ��������ݒ�ł���A�Ƃ������Ƃł��B
�@�T���v���́uAlarmManagerSample�v�Ƃ����E�B�W�F�b�g���AAlarmManager���g�p�����ł��B���̃E�B�W�F�b�g��1���Ԃ�1�x�A0��0�b���傤�ǂɕ\�����X�V���鎞��A�v���ł��B
�@�ڂ����̓\�[�X�t�@�C���S�̂����Ă��������Ƃ��āA�����ł�AlarmManager���g�p���Ă�����Ƀt�H�[�J�X���Đ������܂��B
private void setAlarm(Context context) { Intent alarmIntent = new Intent(context, AlarmManagerSample.class); alarmIntent.setAction(ACTION_START_MY_ALARM); PendingIntent operation = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); long now = System.currentTimeMillis() + 1; // + 1 �͊m���ɖ��������ɂȂ�悤�ɂ���ی� long oneHourAfter = now + interval - now % (interval); am.set(AlarmManager.RTC, oneHourAfter, operation); }
�@3�s�ڂ�ACTION_START_MY_ALARM�́A�����ŏ���ɒ�`�����A�N�V�����ł��B�����ő����Ď����Ŏ��A�N�V�����Ȃ̂ŁA�p�b�P�[�W����N���X��������Ɋ܂݁A���j�[�N�ɂȂ�悤�ɂ��Ă��܂��B
�@�쐬����Intent����uPendingIntent�v���쐬���A�����AlarmManager�Ɏ����ƂƂ��ɐݒ肵�Ă��܂��BAlarmManager#set(int, long, PendingIntent)���\�b�h�̑�1�����ɂ́A���̏ꍇ��AlarmManager.RTC��AlarmManager.ELAPSED_REALTIME�̂ǂ��炩�̒萔���g�p����̂��]�܂����ł��B�������g�p����ƁA�f�o�C�X��wake up���܂���B
�@���̃T���v���ł�1���Ԃ����ɂ��Ă��܂����A�Ⴆ�ΐ^�钆�͕p�x�����炵����A�t�ɐ^�钆������p�x�𑝂₵����A�Ƃ������Ƃ��A�����ŃR�[�f�B���O���Ă��邩�炱���\�ɂȂ�܂��B
�@�Ȃ��A�����Ŏ�����Intent�������w��ő��M���Ă���̂ŁA��M���Ɏ��̎����̂��߂�Intent�̏�����Y��Ȃ��悤�ɂ��Ă��������B
�@����A���̘A�ڂŏ��߂ďo�Ă���PendingIntent�Ƃ������̂́AIntent���ʂ��y���f�B���O���邽�߂֗̕��ȓ��ꕨ�ł��B���ɐ�������N���b�N��p�����������@�ł��A����PendingIntent���g�p���܂��B
PendingIntent�́AIntent���^�C�~���O�����v����Ĕ��M����֗��ȃc�[���ł��B�ȉ��̂悤�Ȏg�������\�ł��B
�܂��APendingIntent�̍����ɂ���āAIntent�̔�ѐ�����炩���ߌ��߂��܂��B
���\�b�h | ���� |
---|---|
getActivity(�c) | Activity���N������PendingIntent�̎擾 |
getBroadcast(�c) | �u���[�h�L���X�g�𓊂���PendingIntent�̎擾 |
getService(�c) | Service���N������PendingIntent�̎擾 |
�\3�@PendingIntent�̃��\�b�h |
�����Ώۂ����炩����Activity��Service�ɍi�荞�߂Ă���ꍇ�A�������g�p����̂����ʓI�ł��B����̃T���v���ł�setBroadcast()���\�b�h��setService()���\�b�h���g�p���Ă���̂ŁA�\�[�X�R�[�h�Q�Ƃ��Ďg�������K�����Ă��������B
�@�T���v���́uClickSample�v�Ƃ����E�B�W�F�b�g���A�E�B�W�F�b�g�ŃN���b�N�C�x���g���E����ł��B
�@�e�L�X�g�����܂��̓{�^�����N���b�N����ƁA���ݎ�����\������T���v���ł��B
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.click_sample); Intent clickIntent = new Intent(); clickIntent.setAction(ACTION_MY_CLICK); PendingIntent pendingIntent = PendingIntent.getService(this, 0, clickIntent, 0); remoteViews.setOnClickPendingIntent(R.id.TextView01, pendingIntent); remoteViews.setOnClickPendingIntent(R.id.Button01, pendingIntent);
�@��L�R�[�h�́ARemoteViews�o�R��GUI�R���|�[�l���g��PendingIntent��ݒ肵�Ă�����ł��B
�@�܂��ARemoteViews���쐬���A����Intent���쐬���܂��B�쐬����Intent�ɂ̓A�N�V������ݒ肵�Ă��܂����A����̓T�[�r�X�Ńt�B���^���邽�߂Ƀ��j�[�N�ȕ����K�v�ł��B�p�b�P�[�W����N���X����g�ݍ��킹��̂��悢�ł��傤�B���̕�����̓��e��AndroidManifest.xml�ɂ��t�B���^��ݒ肵�܂��B
�@���ɁAPendingIntent���쐬���܂��B�쐬����PendingIntent���A�C�ӂ�GUI�R���|�[�l���g�ɐݒ肷��Ί����ł��B
�@���ꂾ���ŁA�ݒ肵��GUI�R���|�[�l���g���N���b�N����A�T�[�r�X��Intent�����ł��āAService#onStart()���\�b�h���Ăяo����܂��B
�@AppWidget�͊J���҂ɂƂ��Đ�����������̂́A�z�[���X�N���[���ɏ풓�ł���Ƃ��������b�g���J���҂ɂƂ��Ă��A�G���h���[�U�[�ɂƂ��Ă����͓I�ł��BAppWidget�̐ݒ��ʂ�Activity�ō쐬������APendingIntent���g�p����Activity�ƘA�g��������A�T�[�r�X���g���̂ĂȂ��悤�ɂ����肷�邱�ƂŁA����ɃE�B�W�F�b�g���p���t���ɂȂ�Ǝv���܂��B
�@�Ō�ɁA�{�L�����M���ɋC���t�����_���Љ�ďI���ɂ��悤�Ǝv���܂��B
�@�z�[���X�N���[���ɃZ���̋��Ȃ���ԂŃE�B�W�F�b�g���N�����Ă��܂�����A�ȉ��̂悤�ȃ��b�Z�[�W�͏o�܂����A���̌�\��������Ȃ��܂܁A�����Ɨ��œ����Ă��邱�ƂɂȂ�܂��B
�@���̏�ԂɂȂ�ƁA�G���h���[�U�[�͂��̕\������Ȃ��E�B�W�F�b�g���폜�ł����A�܂��v���O�����I�ɂ��\��������悤�ɂ��邱�Ƃ͂ł��܂���B���̃��b�Z�[�W���o��̂́A�ŏ���onUpdate()���\�b�h���Ăяo�����O�Ȃ̂ŁA�u�v���O�����I�Ɏ��O�Ƀ`�F�b�N����v�Ƃ������Ƃ��ł��܂���B�[�����ċN�����Ă��\������Ȃ���ԂŋN�������܂܂ł��B����Ɉ������ƂɁA�G���h���[�U�[�͕\������Ă��Ȃ���ԂŃE�B�W�F�b�g���N�����Ă��邱�ƂɋC���t���Ȃ��ł��傤�B
�@Android 1.5���_�ł́A�B�ꂱ�̏�Ԃ�ŊJ�����́A�Y���̃E�B�W�F�b�g���A���C���X�g�[�����邱�Ƃ����ł��B
�@�Ⴆ�A�uFoo�v�Ƃ����E�B�W�F�b�g��onUpdate()���\�b�h��NullPointerException�Ȃǂ̗�O�Ȃǂ������Ă��܂����ꍇ�A�uBar�v�Ƃ����E�B�W�F�b�g�̓��삪�s����ɂȂ��Ă��܂����Ƃ�����悤�ł��B
�@���̏ꍇ�A���b�Z�[�W���o�āA�ǂ̃E�B�W�F�b�g�ɖ�肪���邩�̓G���h���[�U�[�������邩������Ȃ��̂Łi���b�Z�[�W���s�e�Ȃ̂ŁA�������Ȃ���Ȃ�Ȃ��j�A���Ԃ͋X�y�[�X���Ȃ��Ƃ��������܂��ł��B
�@�J�����Ɏ����̃E�B�W�F�b�g�ŗ�O�������Ă��܂����ꍇ�A��͂肻�̌�̊J���Ɏx����������Ă��܂����Ƃ�����܂��B�����Ȃ����ꍇ�́A��������Y���̃E�B�W�F�b�g���폜���āA�G�~�����[�^���ċN������ΏC�����܂��B
Copyright © ITmedia, Inc. All Rights Reserved.