0

Android をアプリ開発に使い始めたばかりです。Google カレンダーから自分のカレンダー イベントを取得し、それを使用して電話の時間でカウンターを実行したいと考えていました。

例: イベントが午後 6 時に開始し、午後 7 時に終了する場合:

次に、電話の時間が午後 6 時未満の場合は、「イベントまでの時間」+ イベントまでの残り時間を出力します。

 if phone time >6.00 pm but < 7.00 pm then print "Time left" + time till 7.00

誰かがそれを可能にするリソースを教えてもらえますか? 私は主に開発にJavaを使用しており、この操作を簡素化する利用可能なライブラリを利用したいと考えていました。ありがとうございました!

4

3 に答える 3

1

ある期間の間に発生するイベントのみが必要であると仮定すると(そうしないと、すぐにイベントが多すぎることになります)、CalendarContract APIのインスタンスヘルパーを使用する方法があります( CalendarContractコンテンツプロバイダーに関する私のブログ投稿を参照してください)。

イベントについて調べる方法は次のとおりです。

   long begin = // starting time in milliseconds
   long end = // ending time in milliseconds
   String[] proj = 
         new String[]{
               Instances._ID, 
               Instances.BEGIN, 
               Instances.END, 
               Instances.EVENT_ID};
   Cursor cursor = 
         Instances.query(getContentResolver(), proj, begin, end);
   if (cursor.getCount() > 0) {
      // do s.th. meaningful with your result set
   }

このヘルパーの良いところは、イベントの可視性を処理することです。たとえば、削除/キャンセルされたイベントは、次の同期まで表示されます。そうしないと、Androidはバックエンドにイベントを削除するように指示できませんでした。自分でそうすることもできますが、終日のイベントや可視性などを考慮したい場合は複雑になります。常にインスタンスを使用してください!

于 2013-03-23T21:19:26.897 に答える
0

これがあなたが望むものだと思います:

Cursor cursor = cr.query(Uri.parse("content://calendar/events"), new String[]{ "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation" }, null, null, null);         
//Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id", "name" }, null, null, null);
String add = null;
cursor.moveToFirst();
String[] CalNames = new String[cursor.getCount()];
int[] CalIds = new int[cursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
    CalIds[i] = cursor.getInt(0);
    CalNames[i] = "Event"+cursor.getInt(0)+": \nTitle: "+ cursor.getString(1)+"\nDescription: "+cursor.getString(2)+"\nStart Date: "+new Date(cursor.getLong(3))+"\nEnd Date : "+new Date(cursor.getLong(4))+"\nLocation : "+cursor.getString(5);
    if(add == null)
        add = CalNames[i];
    else{
        add += CalNames[i];
    }           
    ((TextView)findViewById(R.id.calendars)).setText(add);

    cursor.moveToNext();
}
cursor.close();

クレジット:@Vinay

于 2013-03-22T22:26:30.383 に答える