Googlaカレンダーへの登録方法

737 views
Skip to first unread message

PONTA

unread,
Aug 31, 2010, 9:30:11 PM8/31/10
to 日本Androidの会
はじめまして。PONTAといいます。

Googleカレンダーへ予定を登録するアプリを作成しようとしたのですが、登録した時間がずれてしまいます。

予定に終日のみを設定すると、正しく終日で予定が入りますが、終日と繰り返しを同時に設定すると終日になりません。

9時間遅れるのでタイムゾーンに原因があると思い、登録時にUTCを指定したのですが直りません。

ちなみにカレンダーグループのタイムゾーンはAsia/Tokyoになっています。

http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=pwdwin&no=3285
上記のサイトに登録する処理のプロジェクトをおきました。
パスワードはandroidです。


お手数ですが、どなたかご存知の方がいましたら教えていただけないでしょうか。
よろしくお願いします。

Seiichiroh TAO

unread,
Sep 9, 2010, 7:46:24 AM9/9/10
to android-g...@googlegroups.com
tao と申します

以下のように local の default time zone とし
Time#set を time zone 設定の後にするといいでしょう

//values.put("eventTimezone",Time.TIMEZONE_UTC);
values.put("eventTimezone",TimeZone.getDefault().getDisplayName(Locale.ENGLISH));

// ...

Time times = new Time();
//times.set(date.getTime());
//times.timezone = Time.TIMEZONE_UTC;
times.timezone = TimeZone.getDefault().getDisplayName(Locale.ENGLISH);
times.set(date.getTime());


---
// TAO Seiichiroh <tao19...@gmail.com>

10/09/01 PONTA <m.pont...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>
>

PONTA

unread,
Sep 14, 2010, 10:45:04 PM9/14/10
to 日本Androidの会
taoさん
遅くなりましたが、返信ありがとうございます。

taoさんに指摘をいただいた箇所を訂正しましたが、やはり9時間遅れてしまいます。
データベースの終日フラグも立っていません。
タイムゾーンのずれで終日フラグが立たないということはあるのでしょうか?


カレンダーアプリのジョルテでは終日と繰り返しの同時設定はできているので不可能ということはないのでしょうが・・・

以上です。
ご存知の方いらっしゃいましたら、どうかご助力賜りたく存じます。
宜しくお願い致します。






On 9月9日, 午後8:46, Seiichiroh TAO <tao19651...@gmail.com> wrote:
> tao と申します
>
> 以下のように local の default time zone とし
> Time#set を time zone 設定の後にするといいでしょう
>
> //values.put("eventTimezone",Time.TIMEZONE_UTC);
> values.put("eventTimezone",TimeZone.getDefault().getDisplayName(Locale.ENGL ISH));
>
> // ...
>
> Time times = new Time();
> //times.set(date.getTime());
> //times.timezone = Time.TIMEZONE_UTC;
> times.timezone = TimeZone.getDefault().getDisplayName(Locale.ENGLISH);
> times.set(date.getTime());
>
> ---
> // TAO Seiichiroh <tao19651...@gmail.com>
>
> 10/09/01 PONTA <m.ponta.po...@gmail.com>:
>
>
>
> > はじめまして。PONTAといいます。
>
> > Googleカレンダーへ予定を登録するアプリを作成しようとしたのですが、登録した時間がずれてしまいます。
>
> > 予定に終日のみを設定すると、正しく終日で予定が入りますが、終日と繰り返しを同時に設定すると終日になりません。
>
> > 9時間遅れるのでタイムゾーンに原因があると思い、登録時にUTCを指定したのですが直りません。
>
> > ちなみにカレンダーグループのタイムゾーンはAsia/Tokyoになっています。
>
> >http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=pwd...

Seiichiroh TAO

unread,
Sep 17, 2010, 9:33:52 AM9/17/10
to android-g...@googlegroups.com
疲れ様です。 tao です

「終日」については切り離して、まずは時間のズレから治しましょう

短いコードですので下記に全て載せましたが
これで指定した通りにカレンダー登録できました

package jp.com.android.sample;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Locale;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.text.format.Time;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class SampleCalendarActivity extends Activity {
private long startLongDay;
private long endLongDay;

private Uri calUri;
private Context mContext;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mContext = this;
Button entry = (Button) findViewById(R.id.Button01);

entry.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
calUri = Uri.parse("content://calendar/events");
ContentValues values = new ContentValues();
ContentResolver cr = SampleCalendarActivity.this.getContentResolver();

startLongDay = SampleCalendarActivity.this.getLongDay("2010-09-18 00:00:00");
endLongDay = SampleCalendarActivity.this.getLongDay("2010-09-19 00:00:00");

values.put("calendar_id",1);
values.put("title","title");
values.put("eventLocation","location");
values.put("description","content");
values.put("dtstart",startLongDay);
values.put("dtend",endLongDay);


//values.put("eventTimezone",Time.TIMEZONE_UTC);
values.put("eventTimezone",TimeZone.getDefault().getDisplayName(Locale.ENGLISH));

/*
values.put("allDay",1);
values.put("eventStatus",1);
values.put("visibility","");
values.put("transparency","");
values.put("hasAlarm","0");
values.put("rrule","FREQ=WEEKLY;BYDAY=SU");
values.put("duration",addRecurrenceRule(1));
*/
values.put("allDay",0);
values.put("hasAlarm","0");

cr.insert(calUri,values);

Toast.makeText(mContext,"registered",Toast.LENGTH_SHORT).show();
}
});
}

public long getLongDay(String str){
long time=0;
try{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = format.parse(str);


Time times = new Time();
//times.set(date.getTime());
//times.timezone = Time.TIMEZONE_UTC;
times.timezone = TimeZone.getDefault().getDisplayName(Locale.ENGLISH);
times.set(date.getTime());

time = times.normalize(true);
}catch (Exception e){
e.printStackTrace();
}

return time;
}
}

10/09/15 PONTA <m.pont...@gmail.com>:

kenji tsukamoto

unread,
Sep 17, 2010, 7:00:57 PM9/17/10
to android-g...@googlegroups.com
はじめまして。feinteです。
 
addRecurrenceRule()の
終日設定時のdurationは、"P" + days + "D" ではないでしょうか?
 
関係なかったらすいません。

 
2010年9月17日22:33 Seiichiroh TAO <tao19...@gmail.com>:

PONTA

unread,
Sep 21, 2010, 5:42:08 AM9/21/10
to 日本Androidの会
taoさん

わざわざソースコードまで載せて頂、ありがとうございます。
taoさんの作成したソースコードで問題なく登録できました。
やはりタイムゾーンがいけなかったのですね。
とても勉強になりました。

これからもこちらに質問をする機会があると思いますのでその時はどうぞよろしくお願いいたします。
> 10/09/15 PONTA <m.ponta.po...@gmail.com>:
> >> > このメールはGoogleグループのグループ「日本Androidの会」の登録者に送られています。
> >> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> >> > このグループから退会するには、android-group-j...@googlegroups.com
> >> > にメールを送信してください。
> >> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> >> > からこのグループにアクセスしてください。
>
> > --
> > このメールはGoogleグループのグループ「日本Androidの会」の登録者に送られています。

PONTA

unread,
Sep 21, 2010, 5:45:28 AM9/21/10
to 日本Androidの会
feinteさん

ご指摘ありがとうございます。
私の記述ミスでした。
"P" + days + "D"に直したところ、正しく終日設定がされました。

これからもこちらに質問をする機会があると思いますので、その時はどうぞよろしくお願いいたします。


On 9月18日, 午前8:00, kenji tsukamoto <tsukaandr...@gmail.com> wrote:
> はじめまして。feinteです。
>
> addRecurrenceRule()の
> 終日設定時のdurationは、"P" + days + "D" ではないでしょうか?
>
> 関係なかったらすいません。
>
> 2010年9月17日22:33 Seiichiroh TAO <tao19651...@gmail.com>:
> > 10/09/15 PONTA <m.ponta.po...@gmail.com>:
> > >> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>
> > >> > にメールを送信してください。
> > >> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > >> > からこのグループにアクセスしてください。
>
> > > --
> > > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>
> > > にメールを送信してください。
> > > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > > からこのグループにアクセスしてください。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
Reply all
Reply to author
Forward
0 new messages