当前位置:  编程技术>移动开发
本页文章导读:
    ▪依据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中        根据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中 /** * 下载音乐文件到指定目录 * @param musicPath * @param musicName * @param singerName */ public void downloadMusic(final String musicPath, String musicN.........
    ▪ 公共视图的兑现        公共视图的实现   如上图所示,页面分为两个部分:上半部分是一个UIDatePicker,下半部分是一个UITableView。这两部分可以同时放在同一个XIB里,但是,如果UITableView是一个公共视图的话,也.........
    ▪ Objective-C Unicode 转换成汉语【转】       Objective-C Unicode 转换成中文【转】 + (NSString *)replaceUnicode:(NSString *)unicodeStr { NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; NSString *tempStr2 .........

[1]依据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中
    来源: 互联网  发布时间: 2014-02-18
根据音乐文件和LRC文件的绝对路径下载到sdcard指定目录中
/**
	 * 下载音乐文件到指定目录
	 * @param musicPath
	 * @param musicName
	 * @param singerName
	 */
	public void downloadMusic(final String musicPath, String musicName,
			String singerName ) {
		
		String dir = "ccpod/downloadMusic";
		final String filePath = "/sdcard/ccpod/downloadMusic/" + 
			musicName +"-"+ singerName +".mp3";
		FileService fileService = new FileService();
		fileService.createFileDir(dir);	
		fileService.createFile(filePath);
		
		Runnable r = new Runnable(){
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				int count;
				try {
				URL url = new URL(/blog_article/musicPath/index.html);
				InputStream input = new BufferedInputStream(url.openStream());
				OutputStream output = new FileOutputStream(filePath);
				byte data[] = new byte[1024];
				while ((count = input.read(data)) != -1) {
					output.write(data, 0, count);
					System.out.println(count);
				}
				output.flush();
				output.close();
				input.close();
				} catch (Exception e) {
				Log.e("error",e.getMessage().toString());
				System.out.println(e.getMessage().toString());
				}
			}
		};
		new Thread(r).start();
	}




/**
	 * 下载歌词文件到指定目录
	 * @param lrcPath
	 * @param musicName
	 * @param singerName
	 */
	public void downloadLyric(final String lrcPath, String musicName,
			String singerName) {

		
		String dir = "ccpod/lyric";
		final String filePath = "/sdcard/ccpod/lyric/" + musicName + "-"
				+ singerName + ".lrc";
		FileService fileService = new FileService();
		fileService.createFileDir(dir);
		fileService.createFile(filePath);

		Runnable r = new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				StringBuffer sb = new StringBuffer();
				try {
					URL url = new URL(/blog_article/lrcPath/index.html);
					InputStream input = new BufferedInputStream(
							url.openStream());
					BufferedReader br = new BufferedReader(  
                            new InputStreamReader(input,"GB2312")); 
					
					Writer writer = new OutputStreamWriter(new FileOutputStream(filePath));
					String data = "";  					  
                    while ((data = br.readLine()) != null) {  
                        sb.append(data+ "\r\n");  
                    }
                    writer.write(sb.toString());
					writer.close();
					input.close();
				} catch (Exception e) {
					Log.e("error", e.getMessage().toString());
				}
			}
		};
		new Thread(r).start();
	}


下载歌词时要注意inputStream的转码,由于服务器中的xml文件是用gb2312编码,所以应按照原来的格式读进来


其中创建文件和文件目录代码如下:
FileService.java
public boolean createFileDir(String dirName) {
		dirName = Environment.getExternalStorageDirectory() + "/" + dirName;
		File dir = new File(dirName);
		if (dir.exists()) {
			return false;
		}
		if (!dirName.endsWith("/")) {
			dirName += File.separator;
		}
		if (dir.mkdirs()) {
			return true;
		} else
			return false;
	}
	
	public boolean createFile(String fileName){
		File file = new File(fileName);
		if(file.exists()){
			System.out.println("创建单个文件:"+ fileName + "失败,目标文件已存在");
			return false;
		}
		if(!file.getParentFile().exists()){
			System.out.println("目标文件所在目录不存在,准备创建它");
			return false;
		}
		try {
			if(file.createNewFile()){
				return true;
			}else{
				return false;
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}



[img]

[/img]

参考资料:
Android中文乱码彻底解决
http://www.iteye.com/topic/509046


Android 中下载文件到sdcard和进度条小结
http://www.linuxidc.com/Linux/2011-08/40941.htm


Android中的自动下载歌词
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=61595

    
[2] 公共视图的兑现
    来源: 互联网  发布时间: 2014-02-18
公共视图的实现

 

如上图所示,页面分为两个部分:上半部分是一个UIDatePicker,下半部分是一个UITableView。这两部分可以同时放在同一个XIB里,但是,如果UITableView是一个公共视图的话,也就是说,其他页面也会显示这个UITableView,而且列表内容相同,那么,这样做的话,就得在每个需要显示该表视图的XIB中都加上UITableView以及相应的实现,这样就造成了冗余。

 

我们可以将这个表视图单独出来,作为公共的部分,在需要显示的地方加载进来即可。

 

下面看一个简单的示例。

 

新建一个Test项目,TestAppDelegate.h内容如下:

 

#import <UIKit/UIKit.h>

@class TestViewController;

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    TestViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestViewController *viewController;

@end

 
 TestAppDelegate.m内容如下:

 

#import "TestAppDelegate.h"
#import "TestViewController.h"

@implementation TestAppDelegate

@synthesize window;
@synthesize viewController;

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
	
    return YES;
}

#pragma mark -
#pragma mark Memory management

- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}

@end

 

TestViewController.xib中是一个UIDatePicker,TestViewController.h内容如下:

 

#import <UIKit/UIKit.h>
#import "tableViewController.h"

@interface TestViewController : UIViewController {
	tableViewController *tblController;
}

@end

 

TestViewController.m内容如下:

 

#import "TestViewController.h"
#import "tableViewController.h"

@implementation TestViewController

- (void)viewDidLoad {
    [super viewDidLoad];
	tblController = [[tableViewController alloc] init];
	CGRect rect = CGRectMake(0, 220.f, 320.f, 230.f);
	tblController.view.frame = rect;
	[self.view addSubview:tblController.view];
}

- (void)dealloc {
	[tblController release];
    [super dealloc];
}

@end

 

tableViewController.xib中是一个UITableView,tableViewController.h内容如下:

 

#import <UIKit/UIKit.h>

@interface tableViewController : UITableViewController {
	
}

@property(nonatomic, retain) NSArray *ary;

@end

 

tableViewController.m内容如下:

 

#import "tableViewController.h"

@implementation tableViewController
@synthesize ary;

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];
	NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", nil];
	self.ary = array;
	[array release];
}

#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.ary count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    cell.textLabel.text = [self.ary objectAtIndex:[indexPath row]];
    
    return cell;
}


#pragma mark -
#pragma mark Memory management

- (void)dealloc {
	[ary release];
    [super dealloc];
}

@end
 

    
[3] Objective-C Unicode 转换成汉语【转】
    来源: 互联网  发布时间: 2014-02-18
Objective-C Unicode 转换成中文【转】
    + (NSString *)replaceUnicode:(NSString *)unicodeStr {  
          
        NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];  
        NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];  
        NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];  
        NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];  
        NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData  
                                                                                                 mutabilityOption:NSPropertyListImmutable   
                                                                                                                format:NULL  
                                                                                                  errorDescription:NULL];  
          
        //NSLog(@"Output = %@", returnStr);  
          
        return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];  
    }  


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
WEB前端 iis7站长之家
▪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