在iPhone开发中经常会遇到需要在UIWebView中点击按钮并进行相应的操作,比如点击按钮播放声音等,以下是代码,并从数据库中取出声音数据,以文件的形式保存在本地。
保存声音的方法:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { ...AppDelegate *appDelegate=(...AppDelegate *)[[UIApplication sharedApplication] delegate]; if (navigationType == UIWebViewNavigationTypeLinkClicked) { NSURL *URL = [request URL]; NSLog([URL scheme]); NSLog([URL absoluteString]); //.......code here and call the delegate method NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; BOOL audioResult=FALSE; NSFileManager *fileManager = [NSFileManager defaultManager]; //check if file existed in cache folder NSArray *cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cache objectAtIndex:0] ; NSString *filepath ; filepath=[cachePath stringByAppendingPathComponent:[audioId stringByAppendingString:@".wav"]]; if ([fileManager fileExistsAtPath:filepath]==YES){ [self playVoice:filepath]; } else { audioResult=[appDelegate saveAudio:audioId]; if (audioResult==YES) { //NSLog(@"Speak the audio by the path=%@",filepath); [self playVoice:filepath]; } } [pool release]; [appDelegate saveAudio:gotFM]; }
保存声音的方法:
-(BOOL)saveAudio:(NSString *)key { NSLog(key); BOOL saveSuccess=FALSE; NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"testVoice.db"]; if(sqlite3_open([dbPath UTF8String], &database_voice) == SQLITE_OK) { NSString *sqlString=[NSString stringWithFormat:@"select * from tb_voice where id='%@'",key]; NSLog(sqlString); const char *sql_char=[sqlString UTF8String]; //prepare the select statement int returnValue = sqlite3_prepare_v2(database_voice, sql_char, -1, &selectStatement, NULL); if(returnValue == SQLITE_OK) { //loop all the rows returned by the query. if(sqlite3_step(selectStatement) == SQLITE_ROW) { NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cache objectAtIndex:0] ; NSString *filename=[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 0)]; ////NSLog(filename); NSData *fileData=[NSData dataWithBytes:sqlite3_column_blob(selectStatement, 2) length:sqlite3_column_bytes(selectStatement,2)]; //save the file data //check NSString *filepath = [cachePath stringByAppendingPathComponent:filename]; filepath=[filepath stringByAppendingString:@".wav"]; if ([fileManager createDirectoryAtPath:cachePath attributes:nil]==NO){ ////NSLog(@"fileManager createDirectoryAtPath:cachePath attributes:nil"); } if ([fileData writeToFile:filepath atomically:YES]){ saveSuccess=TRUE; //NSLog(@"saveSuccess"); ////NSLog(@"returnValue"); } else { //NSLog(@"save Fail"); } } sqlite3_finalize(selectStatement); } } return saveSuccess; }
发表评论
-
选取相册视频,并获得路径。
2012-07-18 10:18 1665- (NSString*)videoAssetURLT ... -
ad-hoc及企业版app打包之后在itunes中图标为白色的问题
2012-07-03 16:36 1252准备512*512大小的png(将要显示的图片),在终端执行以 ... -
iOS工具类之16进制颜色转为UIColor
2012-06-27 16:33 6714将16进制颜色如#FF0000,转换为UIColor: ... -
调试内存问题
2012-06-12 10:14 682Project -> Edit Scheme -> ... -
[转]iOS开发之详解剪贴板
2011-12-05 11:43 1474概述: 在iOS中, ... -
过滤html标签(修改版)
2011-12-01 10:44 1271- (NSString *)flattenHTML:(NS ... -
[转] iPhone:UIImage 图像截取,等比例缩放
2011-09-29 10:02 7773@interface UIImage(UIImageSc ... -
[转载]iPhone文件系统NSFileManager
2011-09-09 11:41 1018iPhone文件系统:创建、重命名以及删除文件 NSFile ... -
UIImage用imageNamed的内存问题
2011-09-08 09:33 1231@implementation UIImage(imageNa ... -
截屏存图片到相册或者指定路径
2011-06-13 11:15 2721#import <QuartzCore/Quartz ... -
存图片和视频到iPhone相册
2011-04-19 09:33 7599UIImage *img = [UIImage i ... -
选择相册图片并保存
2011-04-19 08:18 1762.h中: <UINavigationControl ... -
Push一个横屏页面
2011-03-28 16:39 2065[[UIDevice currentDevice] setOr ... -
NSPredicate及正则的一点使用
2011-03-21 14:38 6876记录一点正则表达式的使用。 例如:判断字符串首字母是否为字母 ... -
建立到服务器的连接
2011-02-14 10:47 1316在Mac OS X上,可以使用NSHost和NSS ... -
iPhone中的Sqlite3数据库操作
2010-12-27 09:38 1289可将数据库操作写入一个类,这样用起来也很方便。例如: ... -
Cocos2d游戏场景切换
2010-12-15 09:51 2620在游戏中,我们需要点击菜单选项进入相应的画面,而我们常 ... -
NSNotificationCenter随笔
2010-12-10 13:21 1474可在AppDelegate.h中定义,之后可全局使用。 ... -
Category的使用
2010-12-09 16:17 1014Category的用法有时使得程序很方便,可将已有的类 ... -
iPhone判断是否接入网络
2010-12-06 10:41 2353在这里介绍一种较为简单的判断是否连接网络的方法,首先要引入 ...
相关推荐
在UIWebView中加载本地图片,http://blog.csdn.net/zhangao0086/article/details/7262192
IOS开发中因为引入cocos2dx,导致代码审核不通过无法提交( Apple will stop accepting submissions of apps that use UIWebView APIs )。该问题的解决方案有两种:1)升级Cocos2dx的版本,在查看Cocoas官网及Cocoas...
方法,可以在objective-c代码中调用javascript代码,参数script字符串保存了所要执行的js代码字符串,执行结果以字符串形式返回。以获取web页面标题为例,代码如下: ? 1 NSString *pageTitle = [webView ...
UIWebView的cookie读取与保存
UIWebView+html+css,实现UIWebView中可点击链接,并且可显示gif动画效果
这是我在学习ios的过程中写的一个demo,使用UIWebView实现一个简单的浏览器
UIWebview使用中的js交互简单的简析 欢迎大家指点 共同学习
uiwebview加载各种本地文件(通过loadData方法): UIWebView加载内容的三种方式: 1 加载本地数据文件 指定文件的MIMEType 编码格式使用@“UTF-8” 2加载html字符串(可以加载全部或者部分html文件) 3加载...
NSURLCache让本地数据来代替远程UIWebView请求
UIWebView和js交互 里边自己写了个H5方便大家理解
UIWebView Web 网页 Demo 代码
使用UIWebView和JS进行交互,可以OC操作js,也可以JS对OC进行交互
网页视图的基本使用,网络资源地址字符串的处理,UIWebView属性与协议的综合使用;
UIWebView与JS交互小例子,其中涉及APP向JS提交信息,和JS提交信息给App
UIWebView实现图文混排
UIWebView原生与H5交互,pre;confirm;等包含三个H5页面跳转的交互demo
这是iPhone开发之UIWebView示例程序,具体参考: http://blog.csdn.net/htttw/article/details/7888557
UIWebVeiw的使用,功能包括“返回上页”“在safari打开”“网页刷新”
uiwebview播放视频 iphone开发 ,一个demo