androidcalendar源码
A. 如何读取android里面Calendar的事件
public String QueryAllCalendar(ContentResolver contentResolver){ //日历里面相应的Event的URI Uri uri = Uri.parse("content://calendar//events"); //String[] column=new String[]{"_id","title"}; Cursor cur=contentResolver.query(uri, null, null, null, null); while(cur.moveToNext()){ //日历里面相应的Event的ID String calendarEventId=cur.getString(cur.getColumnIndex("_id")); //日历里面相应的Event的title String calendarEventName=cur.getString(cur.getColumnIndex("title")); System.out.println("calendarEventId:"+calendarEventId+ "calendarEventName"+calendarEventName); }目前已经解决大部分问题,但是有一点不明白的是:在android\android-sdk-windows\sources\android \provider 里面我可以看到Calendar的源码,但是我在Eclipse里面缺无法找到相应的Calendar类。不知道各位有遇到的没有?还望指教
B. 开发Android 日历教程
一、创建
Android
Project
在新建对话框中输入
App
属性,SDK版本全部选最新的,不作版本兼容。主题选择
Holo
Dark。
下一步,使用默认设置
下一步,使用默认设置
下一步,使用默认配置
下一步,使用默认设置
创建完成后的初始画面
在上面的步骤中,我们选择了创建
MainActivity,ADT
帮我们在
src
目录下生成了
MainActivity.java
文件,在
res/layout/
目录下生成了
activity_main.xml
文件,并在编辑窗口打开,如上图,是
UI
界面定义文件,这是一个标准的
xml
文件,显示的图像就是由编辑器解析
xml
文件描绘出来的。点击下方的
"Graphical
Layout"
和
“activity_main.xml"
可以在图形编辑
和
xml
文本编辑器之间切换。
为了项目结构清晰,我们新建一个包,专门用来放
activity:
包名定为
ui.activity
这里,将
Package
Explorer
的显示方式改为
Hierarchical
拖动
MainActivity.java
到
ui.activity
包下,弹出更新对话框,选择OK。
由于改变了
activity
的位置,我们需要更新
AndroidManifest.xml,更正
Application
的配置。
如下图,双击打开
AndroidManifest.xml,选择
Application
标签页,选中
Application
Nodes
中的
MainActivity,右边的
Name
属性是错误的,点击
Browse
重新选择,设为:com.lingsmm.purelunarcalendar.ui.acivity
继续向下拉,将
Screen
orientation
设置为
”sensorLandscape“,表示屏幕方向是横屏,并感应重力方向作调整。
界面编辑窗口上方是工具栏:
1:多屏预览,如果你的程序要兼容多种尺寸的设备,可以选择此项。
2:主屏尺寸设定(我们的应用,不作兼容,只针对
google
Nexus
7,将此选择为
Nexus
7,以10”画面进行编辑布局)
3:屏幕方向,我们选择横屏
4:主题
5:关联的
Java
类,Context
实例由它创建。
6:多语言支持。
7:系统版本选择,如果兼容多版本,可以选择不同版本进行预览。
C. android浏览器源码
已发送2.0 app源码
文件说明:
platform/packages/apps/AccountsAndSyncSettings.git
platform/packages/apps/AlarmClock.git
platform/packages/apps/Bluetooth.git
platform/packages/apps/Browser.git
platform/packages/apps/Calculator.git
platform/packages/apps/Calendar.git
platform/packages/apps/Camera.git
platform/packages/apps/CertInstaller.git
platform/packages/apps/Contacts.git
platform/packages/apps/DeskClock.git
platform/packages/apps/Email.git
platform/packages/apps/Gallery.git
platform/packages/apps/Gallery3D.git
platform/packages/apps/GlobalSearch.git
platform/packages/apps/GoogleSearch.git
platform/packages/apps/HTMLViewer.git
platform/packages/apps/IM.git
platform/packages/apps/Launcher.git
platform/packages/apps/Launcher2.git
platform/packages/apps/Mms.git
platform/packages/apps/Music.git
platform/packages/apps/Nfc.git tree
platform/packages/apps/OMAPCamera.git
platform/packages/apps/PackageInstaller.git
platform/packages/apps/Phone.git
platform/packages/apps/Protips.git
platform/packages/apps/Provision.git
platform/packages/apps/QuickSearchBox.git
platform/packages/apps/Settings.git
platform/packages/apps/SoundRecorder.git
platform/packages/apps/SpeechRecorder.git
platform/packages/apps/Stk.git
platform/packages/apps/Sync.git
platform/packages/apps/Tag.git
platform/packages/apps/Updater.git
platform/packages/apps/VoiceDialer.git
D. Android Calendar获取日期问题
SharedPreferences sp = getSharedPreferences("guozitv2", Context.MODE_PRIVATE);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String spilt[] = df.format(new Date()).toString().split("-");
if (Update(spilt)) {
Editor editor = sp.edit();
editor.putInt("year", Integer.valueOf(spilt[0]));
editor.putInt("month", Integer.valueOf(spilt[1]));
editor.putInt("day", Integer.valueOf(spilt[2]));
editor.commit();
}
public boolean Update(String[] spilt) {
int year = sp.getInt("year", 0);
int month = sp.getInt("month", 0);
int day = sp.getInt("day", 0);
int yearNow = Integer.valueOf(spilt[0]);
int monthNow = Integer.valueOf(spilt[1]);
int dayNow = Integer.valueOf(spilt[2]);
if (year > yearNow) {
return false;
} else if (year < yearNow) {
return true;
} else {
if (month > monthNow) {
return false;
} else if (month < monthNow) {
return true;
} else {
if (day >= dayNow) {
return false;
} else {
return true;
}
}
}
}
E. android日历控件
1.DatePicker
在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。
1.1常用xml属性
DatePicker的常用xml属性如图1所示:
图1 DatePicker常用xml属性
其中,android:calendarViewShown[boolean]用于设置是否显示calendar view;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。
1.2常用方法
DatePicker的常用方法有以下一些:
(1)public CalendarView getCalendarView(); //获取CalendarView
(2)public boolean getCalendarViewShown(); //获取CalendarView是否显示
(3)public int getDayOfMonth(); //获取当前日期的日
(4)public long getMaxDate(); //获取最大日期
(5)public long getMinDate(); //获取最小日期
(6)public int getMonth(); //获取当前日期的月
(7)public boolean getSpinnersShown(); //获取Spinners是否显示
(8)public int getYear(); //获取当前日期的年
(9)public void init(int year,int monthOfYear,int dayOfMonth,
DatePicker.OnDateChangedListener onDateChangedListener); //初始化日期
(10)public void setCalendarViewShown(boolean shown);//设置是否显示CalendarView
(11)public void setMaxDate(long maxDate); //设置最大日期
(12)public void setMinDate(long minDate); //设置最小日期
(13)public void setSpinnersShown(boolean shown); //设置是否显示Spinners
(14)public void updateDate(int year,int month,int dayOfMonth); //更新当前日期2.TimePicker
在Android中,TimePicker用来实现时间输入设置,可以选择12或24小时模式。TimePicker的常用方法有以下一些:
(1)public Integer getCurrentHour(); //获取当前时间的小时
(2)public Integer getCurrentMinute(); //获取当前时间的分钟
(3)public boolean is24HourView(); //获取是否为24小时模式
(4)public void setCurrentHour(Integer currentHour); //设置当前时间的小时
(5)public void setCurrentMinute(Integer currentMinute); //设置当前时间的分钟
(6)public void setIs24HourView(Boolean is24HourView); //设置24小时模式3.DatePickerDialog
在Android中,DatePickerDialog用来显示日期对话框。DatePickerDialog的常用方法有以下一些:
(1)public DatePicker getDatePicker(); //获取DatePicker中的日期值
(2)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件
(3)public void onDateChanged(DatePicker view,int year,int month,int day); //响应日期改变事件
(4)public void updateDate(int year,int monthOfYear,int dayOfMonth); //更新当前日期4.TimePickerDialog
在Android中,TimePickerDialog用来显示时间对话框。TimePickerDialog的常用方法有以下一些:
(1)public void onClick(DialogInterface dialog,int which); //响应对话框中的点击事件
(2)public void onTimeChanged(TimePicker view,int hourOfDay,int minute); //响应时间改变事件
(3)public void updateTime(int hourOfDay,int minuteOfHour); //更新当前时间5.AnalogClock
在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。6.DigitalClock
在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SS AM/PM。
F. Android代码中修改系统时间
android下修改时间的代码:
publicvoidtestDate(){
try{
Processprocess=Runtime.getRuntime().exec("su");
Stringdatetime="20131023.112800";//测试的设置的时间【时间格式yyyyMMdd.HHmmss】
DataOutputStreamos=newDataOutputStream(process.getOutputStream());
os.writeBytes("setproppersist.sys.timezoneGMT ");
os.writeBytes("/system/bin/date-s"+datetime+" ");
os.writeBytes("clock-w ");
os.writeBytes("exit ");
os.flush();
}catch(IOExceptione){
e.printStackTrace();
}
}
G. Android系统日历日历提醒的业务流程是怎么样的
我读CalendarProvider源码里面说是根据Reminders表和Events表产生CalendarAlerts表格数据。然后他是根据广播机制开启一个服务实现可以循环的监听。然后我区看AllInOneActivity里面的时候,只看见了关于Reminders表格的更新,目前还在继续阅读后者,希望可以探讨下,嘿嘿
H. Android开发有没有人做过日历控件,可以签到的
可以按照这个思路:
首先是MainActivity,源码如下
<prename="code"class="java">{
privateSignCalendarcalendar;
privateStringdate;
privateintyears;
privateStringmonths;
privateButtonbtn_sign;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");
DatecurDate=newDate(System.currentTimeMillis());//获取当前时间
date=formatter.format(curDate);
calendar=(SignCalendar)findViewById(R.id.sc_main);
btn_sign=(Button)findViewById(R.id.btn_sign);
btn_sign.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
List<String>list=newArrayList<String>();
list.add("2016-06-30");
list.add(date);
//calendar.setCalendarDaysBgColor(list,
//R.drawable.bg_sign_today);
calendar.addMarks(list,0);
}
});
}
}
以下是布局文件:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.h.cheng.signcalendar.MainActivity">
<com.h.cheng.signcalendar.SignCalendar
android:id="@+id/sc_main"
android:layout_width="match_parent"
android:layout_height="320dp"
android:clickable="true">
</com.h.cheng.signcalendar.SignCalendar>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal">
<Button
android:id="@+id/btn_sign"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="#f00"
android:text="签到"
android:textColor="#fff"/>
</LinearLayout>
</LinearLayout>
I. android开发,闹钟设置问题,关于Calendar
我记得月份好像是要减一的。
calendar1.set(Calendar.MONTH, ii1[1] - 1);
J. android calendar
这两个都是android的包文件,直接把他们安装android上即可。
执行如下命令即可
adb install <你的apk包名>