当前位置:  编程技术>移动开发
本页文章导读:
    ▪视频播发        视频播放 public class AutoPlayer extends Activity { private VideoView vv1=null; private TextView tv1 = null;    private Timer timer = new Timer(true);    private Timer timer2 = new Timer(true);    private String result = null;    .........
    ▪ SD效能移植        SD功能移植 SD card porting   一、进程启动和配置文件的分析     vold的全称是volume daemon。实际上是负责完成系统的CDROM, USB大容量存储,MMC卡等扩展存储的   挂载任务自动完成的守护进程。它.........
    ▪ cocoa中 base64 encode一个NSData的步骤       cocoa中 base64 encode一个NSData的方法 // From: http://www.cocoadev.com/index.pl?BaseSixtyFour + (NSString*)base64forData:(NSData*)theData {         const uint8_t* input = (const uint8_t*)[theData bytes];     NSInteger length = [theData.........

[1]视频播发
    来源: 互联网  发布时间: 2014-02-18
视频播放
public class AutoPlayer extends Activity {

private VideoView vv1=null;
private TextView tv1 = null;
    private Timer timer = new Timer(true);
    private Timer timer2 = new Timer(true);
    private String result = null;
    private int count= 0;
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        vv1=(VideoView)findViewById(R.id.VideoView01);
        tv1=(TextView)findViewById(R.id.TextView01);
       
        vv1.setVideoPath("/mnt/sdcard/Video/bx1.mp4");
        //vv1.setVideoURI(Uri.parse("http://10.85.185.116:8088/myIIS/bx2.mp4"));
        vv1.requestFocus();
        vv1.start();
       
        timer.schedule(task,2000, 2000); //延时1000ms后执行,1000ms执行一次
       
    }//onCreate
   
    TimerTask task = new TimerTask(){
           public void run() {
           count++;
           Message message = new Message();     
            if(count<5)
        {  
           if(vv1.isPlaying())
           {
           message.what = 1;     
           handler.sendMessage(message); 
           }
           else
           {
           message.what = 0;     
           handler.sendMessage(message); 
           }

           }
           else
           {
           if(count<20)
           {
           message.what = 5;
           handler.sendMessage(message);
           }
           else
           {
           message.what = 20;
           handler.sendMessage(message);
           }
           }
       }
    }; 
   
     final Handler handler = new Handler(){ 
         public void handleMessage(Message msg) { 
             switch (msg.what) {     
                 case 1:
                tv1.setText("正在播放");
                     break; 
                 case 0:
                tv1.setText("没有播放");
                break;
                 case 5:
                //vv1.stopPlayback();
                //vv1.seekTo(60000);
                //vv1.start();
                tv1.setText("seekTo 120*1000");
                break;
                 case 20:
                //timer.cancel();
                     WriteSettings("视频播放<br>seeekto<br>播放完毕<br>");
                AutoPlayer.this.finish();
             }     
             super.handleMessage(msg); 
        }   
    }; 


    public void WriteSettings(String data)
    {
        FileOutputStream fOut = null;
        OutputStreamWriter osw = null;
        try{
            fOut = openFileOutput("lee.txt",MODE_PRIVATE);      
            osw = new OutputStreamWriter(fOut);
            osw.write(data);
            osw.flush();
            //Toast.makeText(context, "Settings saved",Toast.LENGTH_SHORT).show();
            }
            catch (Exception e) {      
            e.printStackTrace();
            //Toast.makeText(context, "Settings not saved",Toast.LENGTH_SHORT).show();
            }
            finally {
               try {
                      osw.close();
                      fOut.close();
                      } catch (IOException e) {
                      e.printStackTrace();
                      }
            }
    }
}//class

    
[2] SD效能移植
    来源: 互联网  发布时间: 2014-02-18
SD功能移植
SD card porting
 
一、进程启动和配置文件的分析
 
  vold的全称是volume daemon。实际上是负责完成系统的CDROM, USB大容量存储,MMC卡等扩展存储的
  挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。在Android上的这个
  vold系统和GNU/Linux的之间存在很大的差异,这里主要是分析Android上的vold系统的处理过程。
  自Android 2.2开始,vold又做了大改动,升级为vold 2.0,之前的配置文件是
      system/etc/vold.conf,vold 2.0变为system/etc/vold.fstab。
 
  1、启动vold
  
    在init.rc中启动VOLD这个守护线程和创建socket的命令如下:
    service vold /system/bin/vold
        socket vold stream 0660 root mount
        ioprio be 2
     
  2、配置vold.fstab
  
    vold.fstab文件的格式是:
    Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
    label:    -Label for the volume
    mount_point  -Where the volume will be mounted
    part     -Partition #(1 based), or 'auto' for first usable partition.
    <sysfs_path> -List of sysfs paths to source devices
    
    例如:
    dev_mount sdcard /mnt/sdcard 1 /devices/platform/mxsdhci.0/mmc_host/mmc0
    
    自Android 2.2后,SD mount的位置变为/mnt/sdcard。
      
二、控制流程分析
 
  Vold关于SD card settings的代码位于:
    packages/apps/Settings/src/com/android/settings/deviceinfo/Memory.java
  Vold上层MountService的代码位于:
    frameworks/base/services/java/com/android/server/MountService.java
  Vold底层处理的代码位于:
    system/vold/
    
  1、Vold设计架构
    
    Setting
     |
    MountService
     |
    CommandListener
     |
    VolumeManager  - NetlinkManager
     |
    Volume  -  DirectVolume
     |
    SD/USB device
    
    MountService会接收来之Setting的变化,及来自底层VolumeManager的信息,并对之分析判,然后
    通过doMountVolume命令到底层。
    Vold初始化时,会创建class NetlinkManager和VolumeManager,class NetlinkManager接收
    来自底层的信息,然后传交给VolumeManager处理;
    重要类class VolumeManager 仅有一个实例,它主要负责vold的管理操作,管理多个sd卡,usb各种
    操作;重要类class Volume 可有多个实例, 挂载多少个sd卡、usb,它就有多少个。重要类class
    DirectVolume 封装了很多的方法和属性;重要类class CommandListener主要收到上层
    MountService通过doMountVolume发来的命令,分析后,转交给VolumeManager处理;
    VolumeManager处理信息后,或报告给上层MountService,或交给volume执行具体操作(挂载
    SD,USB).      
    
  2、Vold代码实现过程大致分为三步:
  
    1).创建链接:
     在vold作为一个守护进程,一方面接受驱动的信息,并把信息传给应用层;另一方面接受上层的命令并
     完成相应操作。
     所以这里的链接一共有两条:
     (1)vold socket: 负责vold与应用层的信息传递;
     (2)访问udev的socket: 负责vold与底层的信息传递;
     这两个链接都是在进程的一开始完成创建的。
 
    2).引导:
     这里主要是在vold启动时,对现有外设存储设备的处理。首先,要加载并解析vold.fstab,
     并检查挂载点是否已经被挂载(注:这里检查挂载点的用意不是很清楚!); 其次,执行MMC卡挂
     载; 最后,处理USB大容量存储。
 
    3).事件处理:
     这里通过对两个链接的监听,完成对动态事件的处理,以及对上层应用操作的响应。

 


    
[3] cocoa中 base64 encode一个NSData的步骤
    来源: 互联网  发布时间: 2014-02-18
cocoa中 base64 encode一个NSData的方法

// From: http://www.cocoadev.com/index.pl?BaseSixtyFour

+ (NSString*)base64forData:(NSData*)theData {
   
    const uint8_t* input = (const uint8_t*)[theData bytes];
    NSInteger length = [theData length];
   
    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   
    NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
    uint8_t* output = (uint8_t*)data.mutableBytes;
   
    NSInteger i;
    for (i=0; i < length; i += 3) {
        NSInteger value = 0;
        NSInteger j;
        for (j = i; j < (i + 3); j++) {
            value <<= 8;
           
            if (j < length) {
                value |= (0xFF & input[j]);
            }
        }
       
        NSInteger theIndex = (i / 3) * 4;
        output[theIndex + 0] =                    table[(value >> 18) & 0x3F];
        output[theIndex + 1] =                    table[(value >> 12) & 0x3F];
        output[theIndex + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] : '=';
        output[theIndex + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] : '=';
    }
   
    return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
php开源软件 iis7站长之家
▪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