INFO/global(207): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.以上是我在用android解析文件的时候遇到的问题 还有就是启动的时候总是出现这个错误:
ActivityManager: Can't dispatch DDM chunk 46454154: no handler defined
[2011-01-05 16:58:43 - Mp3Player] ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined
哪位大哥能否帮我解释下这什么意思啊,怎么去修改啊!我找了一下午也没解决!跪求!
ActivityManager: Can't dispatch DDM chunk 46454154: no handler defined
[2011-01-05 16:58:43 - Mp3Player] ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined
哪位大哥能否帮我解释下这什么意思啊,怎么去修改啊!我找了一下午也没解决!跪求!
解决方案 »
- 如何监听android4.0的home键
- 如何解决 三星 Android “/system” 下的文件被还原的问题!
- 关于Android2.3的opensl_es的问题?
- Android 代码问题 请教写法
- 读取sd卡中多媒体文件名到列表中不能成功,求改正
- 和资深android玩家了解下前景
- Theme.AppCompat.Light.DarkActionBar
- Android中WebView打开网页问题
- Android MediaCodec YV12转YUV420 编码后花屏、四重影
- androidstudio3.0新建项目找不到R文件
- android 下实现绘制一条曲线出现问题
- Android游戏开发 点击图片按钮实现返回上一个View的效果
1.是可能你定义的byte数组太小。
2.是你的activity没有定义一个extends Handler的变量,你要异步后台处理的话,必须要定义Handler。
敢问在哪里定义byte数组啊。我已经定义了一个extends Handler的变量啊。但我继承的是DefaultHandler的。(public class Mp3ListContentHandler extends DefaultHandler)。我弄的歌曲大小蛮小的啊,按道理应该没问题啊!
我写了一个下载文件:代码如下
package mars.download;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;public class HttpDownload {
/**
* 1.根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容对象
* 2.通过URL对象,创建一个HttpURLConnection对象
* 3.得到InputStream
* 4.从InputStream当中读取数据
*/
public String download(String urlStr){
StringBuffer sb=new StringBuffer();
String line=null;
BufferedReader buffer=null;
try{
//创建一个URL文件
URL url=new URL(urlStr);
//创建一个Http连接
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
//使用IO流读取数据
buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line=buffer.readLine())!=null){
sb.append(line);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
buffer.close();
}catch(Exception e){
e.printStackTrace();
}
}
return sb.toString();
}}
SAXParser parser = factory.newSAXParser();
YourlHandler handler = new YourlHandler();
parser.parse(context.openFileInput(tyPath), handler);parse断点调一下,肯定是hander里的问题。
你能帮我看下么?下面是我的程序代码:
package mars.mp3player;import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;import mars.download.HttpDownload;
import mars.model.Mp3Info;
import mars.xml.Mp3ListContentHandler;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.SimpleAdapter;public class Mp3ListActivity extends ListActivity {
private static final int UPDATE = 1;
private static final int ABOUT = 2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 在用户点击MENU按钮之后,就会调用该方法,我们可以在这个方法中加入自己的按钮控件
* */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, UPDATE, 1, R.string.mp3list_update);
menu.add(0, ABOUT, 2, R.string.mp3list_about);
return super.onCreateOptionsMenu(menu);
}
@Override
//判断用户点击的按钮
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId()==UPDATE){
//用户点击了更新列表按钮
String xml=downloadXML("http://192.168.1.6:8080//mp3/resources.xml");
System.out.println("xml---->"+xml);
//System.out.println("CCCCCCCCC"+" "+parse(xml));
List<Mp3Info> mp3Infos=parse(xml);
List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Mp3Info mp3Info=(Mp3Info)iterator.next();
HashMap<String, String> map= new HashMap<String, String>();
map.put("mp3_name", mp3Info.getMp3Name());
map.put("mp3_size",mp3Info.getLrcSize());
list.add(map);
}
SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size});
setListAdapter(simpleAdapter);
}
if(item.getItemId()==ABOUT){
//用户点击了关于按钮
}
return super.onOptionsItemSelected(item);
}
private String downloadXML(String urlStr){
HttpDownload httpDownloader=new HttpDownload();
String result=httpDownloader.download(urlStr);
return result;
}
private List<Mp3Info> parse(String xmlStr){ SAXParserFactory saxParseFactory=SAXParserFactory.newInstance();
try{
XMLReader xmlReader=saxParseFactory.newSAXParser().getXMLReader();
List<Mp3Info> infos=new ArrayList<Mp3Info>();
Mp3ListContentHandler mp3ListContentHandler=new Mp3ListContentHandler(infos);
xmlReader.setContentHandler(mp3ListContentHandler);
xmlReader.parse(new InputSource(new StringReader(xmlStr)));
for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println(mp3Info);
System.out.println("bbbbbbb");//这里经过调试,输不出结果。 }
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
}
package mars.xml;import java.util.List;import mars.model.Mp3Info;import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;public class Mp3ListContentHandler extends DefaultHandler{
private List<Mp3Info> infos=null;
private Mp3Info mp3Info=null;
private String tagName=null;
public Mp3ListContentHandler(List<Mp3Info> infos) {
super();
this.infos = infos;
} public List<Mp3Info> getInfos() {
return infos;
} public void setInfos(List<Mp3Info> infos) {
this.infos = infos;
} @Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
} @Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("-------------");//这里有输出 if(qName.equals("resource")){
System.out.println("aaaaaaaa");//这里没输出 infos.add(mp3Info);
}
tagName="";
} @Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
} @Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
String temp=new String(ch,start,length);
if(tagName.equals("id")){
mp3Info.setId(temp);
}
else if(tagName.equals("mp3.name")){
mp3Info.setMp3Name(temp);
}
else if(tagName.equals("mp3.size")){
mp3Info.setMp3Size(temp);
}
else if(tagName.equals("lrc.name")){
mp3Info.setLrcName(temp);
}
else if(tagName.equals("lrc.size")){
mp3Info.setLrcSize(temp);
}
} @Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
this.tagName=localName;
if(tagName.equals("resource")){
mp3Info=new Mp3Info();
}
}
}
这句有问题: xmlReader.parse(new InputSource(new StringReader(xmlStr)));
我试了,在他之前测试 System.out.println("-----")有输出,放在他之后就没有了,怎么回事呀!哪位高人知道呀!
在xmlReader.parse(new InputSource(new StringReader(xmlStr)));前
可能是xmlStr中含有空字符,我使用.trim()后再传递,OK了。希望对大家有用。