android开发过程中遇到的小问题


​转自:http://www.sctarena.com/Article/Article.asp?nid=5070
​1、在编写xml布局的时候,总是提示[Accessibility] Missing contentDescription attribute on image的警告信息

解决方法:

[html] view plaincopyprint?
  1. <ImageView  
  2.     android:layout_width="210dp"  
  3.     android:layout_height="32dp"  
  4.     android:layout_centerHorizontal="true"  
  5.     />  

修改为:

[html] view plaincopyprint?
  1. <ImageView  
  2.     android:layout_width="210dp"  
  3.     android:layout_height="32dp"  
  4.     android:layout_centerHorizontal="true"  
  5.     android:contentDescription="组件的描述内容"  
  6.     />  
 2、在android编写布局的时候,我们有时候需要将一个类封装成一个组件来使用,那么体现在界面上的方法有两种,1.xml布局,2.代码编写

第一种:xml布局

如果是xml布局需要注意两点

a.类的构造方法中必须添加

[html] view plaincopyprint?
  1. public 类名(Context context, AttributeSet attribute) {  }  

b.在xml中的形式如下: http://www.sctarena.com/java/

[html] view plaincopyprint?
  1. <包名.类名  
  2.      属性  
  3.   />  

第二种代码布局,只需要构造

[java] view plaincopyprint?
  1. public 类名(Context context) {  
  2. }  

3、在播放音频的时候使用AudioTrack来实现,但是多次实现audioTrack.play,audioTrack.stop会出现如下现象:

[java] view plaincopyprint?
  1. obtainBuffer() track 0x17c418 disabled, restarting  

原因为:

[java] view plaincopyprint?
  1. 在循环使用AudioTrack.write(byte[] audioData, int offsetInBytes, int sizeInBytes)写入音频数据时,由于网络原因和处理数据代码逻辑乱的原因,音频数据没及时发送过来  

解决方案:

这个方法可能只限于我现在产生这种现象的解决方案:

描述:通过socket来接收aac数据,我取一帧来然后通过faad来解码成pcm码流,然后放在audioTrack里面播放,但是我是先初始化audioTrack.play,然后接收aac数据,调用faad解码成pcm数据,最后把pcm数据写到audioTrack里面播放声音。

解决方法:

造成这种现象的原因在上面已经写出,由于数据没有及时的写入造成的,所以我这边只初始化audioTrack实例,但不马上进行audioTrack.play(),只有第一次来数据的时候才进行audioTrack.play,这样就解决了我现在的问题。

[java] view plaincopyprint?
  1. /* 
  2.      * 播放音频 
  3.      */  
  4.     public void playvideo(byte[] data){  
  5.         if (AppInforToSystem.islistening && aAudio != null && aAudio.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) {  
  6.             aAudio.play();  
  7.             aAudio.write(data, 08192);  
  8.         }else if (AppInforToSystem.islistening && aAudio != null && aAudio.getPlayState() == AudioTrack.PLAYSTATE_PLAYING) {  
  9.             aAudio.write(data, 08192);  
  10.         }  
  11.     }  
posted @ 2013-07-22 17:26  代码单点  阅读(405)  评论(0编辑  收藏  举报