当前位置:  编程技术>移动开发
本页文章导读:
    ▪剔除子字符串        删除子字符串 #include <stdio.h> #include <string.h> int delete_sub_str(const char *str, const char *sub_str, char *result_str) { int count=0; char *p1=str; char *pos=strstr(str,sub_str); while(pos!=NUL.........
    ▪ DataMapper:Validations        DataMapper::Validations 25 module DataMapper 26   module Validations 27 28     Model.append_inclusions self 29 30     def self.included(model) 31       model.extend ClassMethods 32     end 33 34     # Ensures the object.........
    ▪ AudioToolbox学习札记       AudioToolbox学习笔记       之前公司做的是音乐播放器,用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐.........

[1]剔除子字符串
    来源: 互联网  发布时间: 2014-02-18
删除子字符串
#include <stdio.h>
#include <string.h>
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
        int count=0;
        char *p1=str;
        char *pos=strstr(str,sub_str);
        while(pos!=NULL){
                count++;
                while(p1!=pos) *result_str++=*p1++;
                p1+=strlen(sub_str);
                pos=strstr(p1,sub_str);
        }
        while(*p1!='\0')
        {
                *result_str++=*p1++;
        }
        *result_str='\0';
        return count;
}
int main()
{
        char *p1="mabcoabctyuabcq";
        puts(p1);
        char *sub="abc";
        char res[20];
        int a=delete_sub_str(p1,sub,res);
        printf("res=%s and count=%d\n",res,a);
        return 0;
}
 

    
[2] DataMapper:Validations
    来源: 互联网  发布时间: 2014-02-18
DataMapper::Validations
25 module DataMapper
26   module Validations
27
28     Model.append_inclusions self
29
30     def self.included(model)
31       model.extend ClassMethods
32     end
33
34     # Ensures the object is valid for the context provided, and otherwise
35     # throws :halt and returns false.
36     #
37     # @api public
38     def save(context = default_validation_context)
39       model.validators.assert_valid(context)
40       debugger
41       Validations::Context.in_context(context) { super() }
42     end
43    
44     # @api public
45     def update(attributes = {}, context = default_validation_context)
46       model.validators.assert_valid(context)
47       Validations::Context.in_context(context) { super(attributes) }
48     end
49    
50     # @api private
51     def save_self(*)
52       if Validations::Context.any? && !valid?(model.validators.current_context)
53         false
54       else
55         super
56       end
57     end
58
59     # Return the ValidationErrors
60     #
61     # @api public
62     def errors
63       @errors ||= ValidationErrors.new(self)
                                                                                                                                                      55,7          17%

    
[3] AudioToolbox学习札记
    来源: 互联网  发布时间: 2014-02-18
AudioToolbox学习笔记
      之前公司做的是音乐播放器,用到了AudioToolbox这个音频接口,总结下,希望对需要的朋友有帮助。AudioToolbox这个库是C的接口,偏向于底层,用于在线流媒体音乐的播放,可以调用该库的相关接口自己封装一个在线播放器类,不过也有一个开源的播放器AudioStreamer,是老外封装,有兴趣的朋友可以研究下。
      其实IOS库中有两个可以播放在线音乐的播放器类,AVPlayer和MPMusicPlayerController
这两个做简单的播放还不错,但是如果要做专业的音乐播放项目,功能还不够强大,例如:边听边存、断点续传、播放事件等等都无法满足。一下是以前做的笔记,仅供参考

播放流程图:


数据结构及接口说明:


	•	数据类型
1.AudioFileStreamID    			文件流
2.AudioQueueRef         			播放队列 
3.AudioStreamBasicDescription   格式化音频数据
4.AudioQueueBufferRef             数据缓冲

	•	回调函数
1.AudioFileStream_PacketsProc    	解析音频数据回调
2.AudioSessionInterruptionListener	音频会话被打断
3.AudioQueueOutputCallback		  	一个AudioQueueBufferRef播放完

	•	主要函数
0.AudioSessionInitialize (NULL, NULL, AudioSessionInterruptionListener, self);
初始化音频会话

1.AudioFileStreamOpen(
						(void*)self,                          
						&AudioFileStreamPropertyListenerProc, 
						&AudioFileStreamPacketsProc,          
						0,                                    
						&audio_file_stream);			
建立一个文件流AudioFileStreamID,传输解析的数据

2.AudioFileStreamParseBytes(
						  audio_file_stream,
						  datalen,
						  [data bytes],
						  kAudioFileStreamProperty_FileFormat);	
解析音频数据

3.AudioQueueNewOutput(&audio_format, AudioQueueOutputCallback, (void*)self, [[NSRunLoop currentRunLoop] getCFRunLoop], kCFRunLoopCommonModes, 0, &audio_queue);
创建音频队列AudioQueueRef

4.AudioQueueAllocateBuffer(queue, [data length], &buffer);
创建音频缓冲数据AudioQueueBufferRef

5.AudioQueueEnqueueBuffer(queue, buffer, num_packets, packet_descriptions);
把缓冲数据排队加入到AudioQueueRef等待播放

6.AudioQueueStart(audio_queue, nil); 	播放
7.AudioQueueStop(audio_queue, true);
 AudioQueuePause(audio_queue);      	停止、暂停

	•	断点续传
1。在http请求头中设置数据的请求范围,请求头中都是key-value成对
	key:Range           value:bytes=0-1000
    [request setValue:range  forHTTPHeaderField:@"Range"];
可以实现,a.网络断开后再连接能继续从原来的断点下载
			b.可以实现播放进度可随便拉动


    
最新技术文章:
▪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