对于多媒体的application经常有需要禁止其他多媒体声音的需求。
在网上搜索了相关的方法:
Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", "pause"); sendBroadcast(i);后来发现这个方法只能解决部分问题,对于那些不支持这个Intent的APP及收音机等是不起作用的。
有一个根本性解决问题的方法,就是获取声音播放的硬件的焦点(个人理解),从而使其它APP停止播放。因为要发出声音肯定要硬件支持的。这里关键是使用AudioManager类。具体代码如下:
AudioManager mAudioManager = (AudioManager) context .getSystemService(Context.AUDIO_SERVICE); if (mAudioManager != null) { try { mAudioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); } catch (Exception ex) { } }注意看requestAudioFocus函数第三个参数的使用,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT表示临时获取音乐播放硬件焦点。
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.File;
public class ReadFile {
/**
* 删除某个文件夹下的所有文件夹和文件
*
* @param delpath
* String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean deletefile(String delpath) throws Exception {
try {
File file = new File(delpath);
// 当且仅当此抽象路径名表示的文件存在且 是一个目录时,返回 true
if (!file.isDirectory()) {
file.delete();
} else if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(delpath + "\\" + filelist[i]);
if (!delfile.isDirectory()) {
delfile.delete();
System.out
.println(delfile.getAbsolutePath() + "删除文件成功");
} else if (delfile.isDirectory()) {
deletefile(delpath + "\\" + filelist[i]);
}
}
System.out.println(file.getAbsolutePath()+"删除成功");
file.delete();
}
} catch (FileNotFoundException e) {
System.out.println("deletefile() Exception:" + e.getMessage());
}
return true;
}
/**
* 输出某个文件夹下的所有文件夹和文件路径
*
* @param delpath
* String
* @throws FileNotFoundException
* @throws IOException
* @return boolean
*/
public static boolean readfile(String filepath)
throws FileNotFoundException, IOException {
try {
File file = new File(filepath);
System.out.println("遍历的路径为:" + file.getAbsolutePath());
// 当且仅当此抽象路径名表示的文件存在且 是一个目录时(即文件夹下有子文件时),返回 true
if (!file.isDirectory()) {
System.out.println("该文件的绝对路径:" + file.getAbsolutePath());
System.out.println("名称:" + file.getName());
} else if (file.isDirectory()) {
// 得到目录中的文件和目录
String[] filelist = file.list();
if (filelist.length == 0) {
System.out.println(file.getAbsolutePath()
+ "文件夹下,没有子文件夹或文件");
} else {
System.out
.println(file.getAbsolutePath() + "文件夹下,有子文件夹或文件");
}
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
System.out.println("遍历的路径为:" + readfile.getAbsolutePath());
if (!readfile.isDirectory()) {
System.out.println("该文件的路径:"
+ readfile.getAbsolutePath());
System.out.println("名称:" + readfile.getName());
} else if (readfile.isDirectory()) {
System.out.println("-----------递归循环-----------");
readfile(filepath + "\\" + filelist[i]);
}
}
}
} catch (FileNotFoundException e) {
System.out.println("readfile() Exception:" + e.getMessage());
}
return true;
}
public static void main(String[] args) {
try {
// readfile("D:/file");
deletefile("D:/file");
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("ok");
}
}
// // Player.m // Test2 // // Created by rayln on 13-9-29. // Copyright 2013年 __MyCompanyName__. All rights reserved. // #import "Player.h" @implementation Player - (id)init{ self = [super init]; if(self){ CCSpriteBatchNode* path = [CCSpriteBatchNode batchNodeWithFile:@"player.png"]; [self addChild:path z:0 tag:0]; CCSprite* man = [CCSprite spriteWithTexture:[[path textureAtlas] texture] rect:CGRectMake(0, 0, 24, 32)]; [man setPosition:CGPointMake(150, 150)]; [self addChild:man]; NSMutableArray* arr = [NSMutableArray array]; for (int y=0; y<4; y++) { for (int x=0; x<3; x++) { CCSpriteFrame* frame = [CCSpriteFrame frameWithTexture:[[path textureAtlas] texture] rect:CGRectMake(x*24, y*32, 24, 32)]; [arr addObject:frame]; } } CCAnimation* animation = [CCAnimation animationWithSpriteFrames:arr delay:.1]; CCAnimate* animate = [CCAnimate actionWithAnimation:animation]; CCRepeatForever* repeat = [CCRepeatForever actionWithAction:animate]; [man runAction:repeat]; } return self; } @end