当前位置:  编程技术>移动开发
本页文章导读:
    ▪Andorid时间控件跟日期控件的Demo(代码)        Andorid时间控件和日期控件的Demo(代码)默认显示当前时间:      time.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fi.........
    ▪ 创设initramfs-基于 TI AM335X        创建initramfs-基于 TI AM335X mail:bookworepeng@Hotmail.com qq:196568501 phone:13410905075 author:drivermonkey -欢迎交流 1)根文件系统创建,所谓的建立根文件系统就是将所需要根文件copy 到一个目录,用压.........
    ▪ ASIHTTPRequest兑现断点续传       ASIHTTPRequest实现断点续传 ASIHTTPRequest可以实现断点续传。网上有一些介绍类似使用: [request setAllowResumeForFileDownloads:YES]; 方法的。但是它不是真正意义的断点续传。它只能让应用在下载过程.........

[1]Andorid时间控件跟日期控件的Demo(代码)
    来源: 互联网  发布时间: 2014-02-18
Andorid时间控件和日期控件的Demo(代码)

默认显示当前时间:

    

time.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="日期和时间控件的使用DEMO" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/showdate"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/pickdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选择日期" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/showtime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/picktime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选择时间" />
    </LinearLayout>

</LinearLayout>

TimeActivity.java


public class TimeActivity extends Activity {
	
	private EditText showDate = null;
	private Button pickDate = null;
	private EditText showTime = null;
	private Button pickTime = null;
	
	private static final int SHOW_DATAPICK = 0; 
    private static final int DATE_DIALOG_ID = 1;  
    private static final int SHOW_TIMEPICK = 2;
    private static final int TIME_DIALOG_ID = 3;
    
    private int mYear;  
    private int mMonth;
    private int mDay; 
    private int mHour;
    private int mMinute;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.time);
        
        initializeViews();
        
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);  
        mMonth = c.get(Calendar.MONTH);  
        mDay = c.get(Calendar.DAY_OF_MONTH);
        
        mHour = c.get(Calendar.HOUR_OF_DAY);
        mMinute = c.get(Calendar.MINUTE);
        
        setDateTime(); 
        setTimeOfDay();
    }
    
    /**
     * 初始化控件和UI视图
     */
    private void initializeViews(){
        showDate = (EditText) findViewById(R.id.showdate);  
        pickDate = (Button) findViewById(R.id.pickdate); 
        showTime = (EditText)findViewById(R.id.showtime);
        pickTime = (Button)findViewById(R.id.picktime);
        
        pickDate.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
	           Message msg = new Message(); 
	           if (pickDate.equals((Button) v)) {  
	              msg.what = TimeActivity.SHOW_DATAPICK;  
	           }  
	           TimeActivity.this.dateandtimeHandler.sendMessage(msg); 
			}
		});
        
        pickTime.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
	           Message msg = new Message(); 
	           if (pickTime.equals((Button) v)) {  
	              msg.what = TimeActivity.SHOW_TIMEPICK;  
	           }  
	           TimeActivity.this.dateandtimeHandler.sendMessage(msg); 
			}
		});
    }

    /**
     * 设置日期
     */
	private void setDateTime(){
       final Calendar c = Calendar.getInstance();  
       
       mYear = c.get(Calendar.YEAR);  
       mMonth = c.get(Calendar.MONTH);  
       mDay = c.get(Calendar.DAY_OF_MONTH); 
  
       updateDateDisplay(); 
	}
	
	/**
	 * 更新日期显示
	 */
	private void updateDateDisplay(){
       showDate.setText(new StringBuilder().append(mYear).append("-")
    		   .append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1)).append("-")
               .append((mDay < 10) ? "0" + mDay : mDay)); 
	}
	
    /** 
     * 日期控件的事件 
     */  
    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {  
  
       public void onDateSet(DatePicker view, int year, int monthOfYear,  
              int dayOfMonth) {  
           mYear = year;  
           mMonth = monthOfYear;  
           mDay = dayOfMonth;  

           updateDateDisplay();
       }  
    }; 
	
	/**
	 * 设置时间
	 */
	private void setTimeOfDay(){
	   final Calendar c = Calendar.getInstance(); 
       mHour = c.get(Calendar.HOUR_OF_DAY);
       mMinute = c.get(Calendar.MINUTE);
       updateTimeDisplay();
	}
	
	/**
	 * 更新时间显示
	 */
	private void updateTimeDisplay(){
       showTime.setText(new StringBuilder().append(mHour).append(":")
               .append((mMinute < 10) ? "0" + mMinute : mMinute)); 
	}
    
    /**
     * 时间控件事件
     */
    private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
		
		@Override
		public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
			mHour = hourOfDay;
			mMinute = minute;
			
			updateTimeDisplay();
		}
	};
    
    @Override  
    protected Dialog onCreateDialog(int id) {  
       switch (id) {  
       case DATE_DIALOG_ID:  
           return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,  
                  mDay);
       case TIME_DIALOG_ID:
    	   return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, true);
       }
    	   
       return null;  
    }  
  
    @Override  
    protected void onPrepareDialog(int id, Dialog dialog) {  
       switch (id) {  
       case DATE_DIALOG_ID:  
           ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);  
           break;
       case TIME_DIALOG_ID:
    	   ((TimePickerDialog) dialog).updateTime(mHour, mMinute);
    	   break;
       }
    }  
  
    /** 
     * 处理日期和时间控件的Handler 
     */  
    Handler dateandtimeHandler = new Handler() {
  
       @Override  
       public void handleMessage(Message msg) {  
           switch (msg.what) {  
           case TimeActivity.SHOW_DATAPICK:  
               showDialog(DATE_DIALOG_ID);  
               break; 
           case TimeActivity.SHOW_TIMEPICK:
        	   showDialog(TIME_DIALOG_ID);
        	   break;
           }  
       }  
  
    }; 
    
}




    
[2] 创设initramfs-基于 TI AM335X
    来源: 互联网  发布时间: 2014-02-18
创建initramfs-基于 TI AM335X


mail:bookworepeng@Hotmail.com

qq:196568501

phone:13410905075

author:drivermonkey

-欢迎交流


1)根文件系统创建,所谓的建立根文件系统就是将所需要根文件copy 到一个目录,用压缩命令压缩为指定格式。

2)将更文件系统编译进内核。具体方法就是在 编译内核的时候指定第一步生成的根文件路径,然后编译。

       KERNEL OPTIONS:

#
# General setup
#
...
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="<path_to>/target_fs>"
...

#
# UBI - Unsorted block images
#
...
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024

3)把内核直接放到sd或者nand中,系统起来

  

在系统启动的过程中遇到了这样的问题:

1.WARNING: Unable to open an initial console

解决方式:在根文件加入:

cd /dev
mknod -m 660 console c 5 1
mknod -m 660 null c 1 3

2. 在系统启动的时候找不到init 程序

解决方式:

创建 link 使其指向 init 程序

3.启动到level 5 的时候可能出现 找不到 库文件的情况。

解决防止:

直接将缺少库文件 copy 到根文件系统里


参考资料:

http://processors.wiki.ti.com/index.php/Initrd


    
[3] ASIHTTPRequest兑现断点续传
    来源: 互联网  发布时间: 2014-02-18
ASIHTTPRequest实现断点续传

ASIHTTPRequest可以实现断点续传。网上有一些介绍类似使用:

[request setAllowResumeForFileDownloads:YES];

方法的。但是它不是真正意义的断点续传。它只能让应用在下载过程中,暂停和继续。如果退出应用再进入是无效的。

不过,通过ASIHTTPRequest的异步请求以及delegate还是可以实现断点续传的。

本文还是以Grails编写断点续传服务器端为例。

异步请求的代码:


-(void) doSimpleGetBinary{ 
    NSURL *url = [NSURL URLWithString:@"http://localhost:8080/BookProto/book/image"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setRequestMethod:@"GET"]; 
    //[request addRequestHeader:@"Range" value:@"bytes=3-"]; 
    [request setDelegate:self]; 
    
    [request startAsynchronous]; 
}

这里设置了Delegate, 要在头文件中实现相应的protocol:

@interface CFHttpDemoViewController : UIViewController<ASIProgressDelegate> {

本例中使用到了delegate的如下方法。

requestFinished:

- (void)requestFinished:(ASIHTTPRequest *)request{ 
    NSLog(@"response status code: %i",[request responseStatusCode]); 
    NSLog(@"response content length: %@",[[request responseHeaders] objectForKey:@"Content-Length" ]); 
    NSLog(@"request finished."); 
    label.text=@"request finished."; 
}

 

这个方法在异步请求结束后调用。

下面的方法,是当缓冲区接收到部分数据后调用,看起来是每间隔一定的毫秒,就调用一下,并传入缓冲区的NSData对象。

-(void)request:(ASIHTTPRequest *)request  didReceiveData:(NSData *)data{ 
    NSLog(@"did receive data, data length: %i",[data length]); 
    
    //复制到字节数组中 
    Byte *byteData=(Byte *)malloc([data length]); 
    memcpy(byteData,[data bytes],[data length]); 
    
    for (int i=0; i<=10; i++) { 
        NSLog(@"%i: %i",i+1,byteData[i]); 
    } 
    
    free(byteData); 
    
    [request cancel]; 
    label.text=@"canceled."; 
}

 

运行代码,屏蔽:

[request addRequestHeader:@"Range" value:@"bytes=3-"];

和取消屏蔽,数据分别如下:

2011-07-12 14:17:13.497 CFHttpDemo[2647:207] did receive data, data length: 10172 
2011-07-12 14:17:13.514 CFHttpDemo[2647:207] 1: 137 
2011-07-12 14:17:13.515 CFHttpDemo[2647:207] 2: 80 
2011-07-12 14:17:13.516 CFHttpDemo[2647:207] 3: 78 
2011-07-12 14:17:13.516 CFHttpDemo[2647:207] 4: 71 
2011-07-12 14:17:13.517 CFHttpDemo[2647:207] 5: 13 
2011-07-12 14:17:13.518 CFHttpDemo[2647:207] 6: 10 
2011-07-12 14:17:13.518 CFHttpDemo[2647:207] 7: 26 
2011-07-12 14:17:13.519 CFHttpDemo[2647:207] 8: 10 
2011-07-12 14:17:13.520 CFHttpDemo[2647:207] 9: 0 
2011-07-12 14:17:13.520 CFHttpDemo[2647:207] 10: 0 
2011-07-12 14:17:13.521 CFHttpDemo[2647:207] 11: 0 
2011-07-12 14:17:13.522 CFHttpDemo[2647:207] response status code: 200 
2011-07-12 14:17:13.523 CFHttpDemo[2647:207] response content length: 10172 
2011-07-12 14:17:13.523 CFHttpDemo[2647:207] request finished.

2011-07-12 14:02:24.551 CFHttpDemo[2578:207] did receive data, data length: 10169 
2011-07-12 14:02:24.553 CFHttpDemo[2578:207] byteData ok. 
2011-07-12 14:02:24.554 CFHttpDemo[2578:207] 1: 71 
2011-07-12 14:02:24.554 CFHttpDemo[2578:207] 2: 13 
2011-07-12 14:02:24.555 CFHttpDemo[2578:207] 3: 10 
2011-07-12 14:02:24.555 CFHttpDemo[2578:207] 4: 26 
2011-07-12 14:02:24.556 CFHttpDemo[2578:207] 5: 10 
2011-07-12 14:02:24.556 CFHttpDemo[2578:207] 6: 0 
2011-07-12 14:02:24.557 CFHttpDemo[2578:207] 7: 0 
2011-07-12 14:02:24.557 CFHttpDemo[2578:207] 8: 0 
2011-07-12 14:02:24.558 CFHttpDemo[2578:207] 9: 13 
2011-07-12 14:02:24.558 CFHttpDemo[2578:207] 10: 73 
2011-07-12 14:02:24.560 CFHttpDemo[2578:207] 11: 72 
2011-07-12 14:02:24.561 CFHttpDemo[2578:207] response status code: 206 
2011-07-12 14:02:24.561 CFHttpDemo[2578:207] response content length: 10169 
2011-07-12 14:02:24.562 CFHttpDemo[2578:207] request finished.

2.

NSUrlConnection实现断点续传的关键是自定义http request的头部的range域属性。

 Range头域
  Range头域可以请求实体的一个或者多个子范围。例如,
  表示头500个字节:bytes=0-499
  表示第二个500字节:bytes=500-999
  表示最后500个字节:bytes=-500
  表示500字节以后的范围:bytes=500-
  第一个和最后一个字节:bytes=0-0,-1
  同时指定几个范围:bytes=500-600,601-999
  但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。

在ios中使用NSMutableURLRequest来定义头部域
  • NSURL *url1=[NSURL URLWithString:@"下载地址";  
  • NSMutableURLRequest* request1=[NSMutableURLRequest requestWithURL:url1];  
  • [request1 setValue:@"bytes=20000-" forHTTPHeaderField:@"Range"];   
  • [request1 setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];  
  • NSData *returnData1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];   
  • [self writeToFile:returnData1 fileName:@"SOMEPATH"];  
  •   
  •   
  •   
  •   
  • -(void)writeToFile:(NSData *)data fileName:(NSString *) fileName  
  • {  
  •     NSString *filePath=[NSString stringWithFormat:@"%@",fileName];  
  •     if([[NSFileManager defaultManager] fileExistsAtPath:filePath] == NO){  
  •         NSLog(@"file not exist,create it...");  
  •         [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];  
  •     }else {  
  •     NSLog(@"file exist!!!");  
  •     }  
  •   
  •     FILE *file = fopen([fileName UTF8String], [@"ab+" UTF8String]);  
  •   
  •     if(file != NULL){  
  •         fseek(file, 0, SEEK_END);  
  •     }  
  •     int readSize = [data length];  
  •     fwrite((const void *)[data bytes], readSize, 1, file);  
  •     fclose(file);  
  • }  

  •     
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3