登录
首页 » Android » android MP3 解码源码

android MP3 解码源码

于 2022-08-18 发布 文件大小:140.90 kB
0 195
下载积分: 2 下载次数: 1

代码说明:

资源描述本资源包含了android平台下MP3解码方式的源码,可以用于需要原始音频数据的场合!

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 下拉列表Spinner入门级示例代码
    非常入门级的示例,适合新手
    2015-04-25下载
    积分:1
  • android 未读消息提醒 加图标 实例源码下载(viewbadger)
    未读消息提醒 实例源码,非常不错
    2015-01-30下载
    积分:1
  • android canvas详解
    Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0。今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳过这篇文章。 大部分2D使用的api都在android.graphics和android.graphics.drawable包中。他们提供了图形处理相关的: Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、 BitmapDrawable和TransitionDrawable等。以图形处理来说,我们最常用到的就是在一个View上画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。下面我们就主要来了解下Canvas的使用方法。 Canvas对象的获取方式有两种:一种我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。另一种就是当你想创建一个Canvas对象时使用的方法: 1 2 Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);   Canvas c =newCanvas(b); 上面代码创建了一个尺寸是100*100的Bitmap,使用它作为Canvas操作的对象,这时候的Canvas就是使用创建的方式。当你使用创建的Canvas在bitmap上执行绘制方法后,你还可以将绘制的结果提交给另外一个Canvas,这样就可以达到两个Canvas协作完成的效果,简化逻辑。但是android SDK建议使用View.onDraw参数里提供的Canvas就好,没必要自己创建一个新的Canvas对象。接下来我们看看Canvas提供我们哪些绘制图形的方法。我们创建一个自定义View对象,使用onDraw方法提供的Canvas进行绘制图形。 CanvasDemoActivity.java: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 package com.android777.demo.uicontroller.graphics;                                                                                                                                      import android.app.Activity;   import android.content.Context;   import android.graphics.Canvas;   import android.graphics.Color;   import android.graphics.Paint;   import android.os.Bundle;   import android.view.View;                                                                                                                                      public class CanvasDemoActivity extends Activity {                                                                                                                                          @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);                                                                                                                                              setContentView(newCustomView1(this));                                                                                                                                          }                                                                                                                                          /**        * 使用内部类 自定义一个简单的View        * @author Administrator        *        */     class CustomView1 extends View{                                                                                                                                              Paint paint;                                                                                                                                              public CustomView1(Context context) {               super(context);               paint =newPaint();//设置一个笔刷大小是3的黄色的画笔               paint.setColor(Color.YELLOW);               paint.setStrokeJoin(Paint.Join.ROUND);               paint.setStrokeCap(Paint.Cap.ROUND);               paint.setStrokeWidth(3);           }                                                                                                                                              //在这里我们将测试canvas提供的绘制图形方法           @Override           protected void onDraw(Canvas canvas) {                                                                                                                                              }                                                                                                                                          }                                                                                                                                      } 执行结果是一片黑色的区域,因为在自定义的CustomView1中,我们没有做任何的绘制操作。canvas提供的绘制图形的方法都是以draw开头的,我们可以查看api: 从上面方法的名字看来我们可以知道Canvas可以绘制的对象有:弧线(arcs)、填充颜色(argb和color)、 Bitmap、圆(circle和oval)、点(point)、线(line)、矩形(Rect)、图片(Picture)、圆角矩形 (RoundRect)、文本(text)、顶点(Vertices)、路径(path)。通过组合这些对象我们可以画出一些简单有趣的界面出来,但是光有这些功能还是不够的,如果我要画一个仪表盘(数字围绕显示在一个圆圈中)呢? 幸好Android还提供了一些对Canvas位置转换的方法:rorate、scale、translate、skew(扭曲)等,而且它允许你通过获得它的转换矩阵对象(getMatrix方法,不知道什么是转换矩阵?看这里) 直接操作它。这些操作就像是虽然你的笔还是原来的地方画,但是画纸旋转或者移动了,所以你画的东西的方位就产生变化。为了方便一些转换操作,Canvas 还提供了保存和回滚属性的方法(save和restore),比如你可以先保存目前画纸的位置(save),然后旋转90度,向下移动100像素后画一些图形,画完后调用restore方法返回到刚才保存的位置。下面我们就演示下canvas的一些简单用法: 1 2 3 4 protected void onDraw(Canvas canvas) {                                                                                                                                          canvas.drawCircle(100, 100, 90, paint);   } 效果是: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          //绘制弧线区域                                                                                                                                          RectF rect =newRectF(0, 0, 100, 100);                                                                                                                                          canvas.drawArc(rect,//弧线所使用的矩形区域大小               0, //开始角度               90,//扫过的角度               false,//是否使用中心               paint);                                                                                                                                      } 使用下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 protected void onDraw(Canvas canvas) {                                                                                                                                          //绘制弧线区域                                                                                                                                          RectF rect =newRectF(0, 0, 100, 100);                                                                                                                                          canvas.drawArc(rect,//弧线所使用的矩形区域大小               0, //开始角度               90,//扫过的角度               true,//是否使用中心               paint);                                                                                                                                      } 两图对比我们可以发现,当 drawArcs(rect,startAngel,sweepAngel,useCenter,paint)中的useCenter为false时,弧线区域是用弧线开始角度和结束角度直接连接起来的,当useCenter为true时,是弧线开始角度和结束角度都与中心点连接,形成一个扇形。 1 2 3 4 5 protected void onDraw(Canvas canvas) {                                                                                                                                          canvas.drawColor(Color.BLUE);                                                                                                                                      } canvas.drawColor是直接将View显示区域用某个颜色填充满。 1 2 3 4 5 6 7 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          //画一条线       canvas.drawLine(10, 10, 100, 100, paint);                                                                                                                                      } Canvas.drawOval: 1 2 3 4 5 6 7 8 9 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          //定义一个矩形区域       RectF oval =newRectF(0,0,200,300);       //矩形区域内切椭圆       canvas.drawOval(oval, paint);                                                                                                                                      } canvas.drawPosText: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          //按照既定点 绘制文本内容       canvas.drawPosText("Android777",newfloat[]{               10,10,//第一个字母在坐标10,10               20,20,//第二个字母在坐标20,20               30,30,//....               40,40,               50,50,               60,60,               70,70,               80,80,               90,90,               100,100       }, paint);                                                                                                                                      } canvas.drawRect: 1 2 3 4 5 6 7 8 9 10 @Override       protected void onDraw(Canvas canvas) {                                                                                                                                              RectF rect =newRectF(50, 50, 200, 200);                                                                                                                                              canvas.drawRect(rect, paint);                                                                                                                                          }                                                                                                                                      } canvas.drawRoundRect: 1 2 3 4 5 6 7 8 9 10 11 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          RectF rect =newRectF(50, 50, 200, 200);                                                                                                                                          canvas.drawRoundRect(rect,                           30,//x轴的半径                           30,//y轴的半径                           paint);                                                                                                                                      } canvas.drawPath: 1 2 3 4 5 6 7 8 9 10 11 12 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          Path path =newPath();//定义一条路径       path.moveTo(10, 10);//移动到 坐标10,10       path.lineTo(50, 60);       path.lineTo(200,80);       path.lineTo(10, 10);                                                                                                                                          canvas.drawPath(path, paint);                                                                                                                                      } canvas.drawTextOnPath: 1 2 3 4 5 6 7 8 9 10 11 12 13 @Override           protected void onDraw(Canvas canvas) {                                                                                                                                                  Path path =newPath();//定义一条路径               path.moveTo(10, 10);//移动到 坐标10,10               path.lineTo(50, 60);               path.lineTo(200,80);               path.lineTo(10, 10);                                                                                                                                      //          canvas.drawPath(path, paint);               canvas.drawTextOnPath("Android777开发者博客", path, 10, 10, paint);                                                                                                                                              } 位置转换方法,canvas.rorate和canvas.translate: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 @Override   protected void onDraw(Canvas canvas) {                                                                                                                                          paint.setAntiAlias(true);       paint.setStyle(Style.STROKE);       canvas.translate(canvas.getWidth()/2, 200);//将位置移动画纸的坐标点:150,150       canvas.drawCircle(0, 0, 100, paint);//画圆圈                                                                                                                                          //使用path绘制路径文字       canvas.save();       canvas.translate(-75, -75);       Path path =newPath();       path.addArc(newRectF(0,0,150,150), -180, 180);       Paint citePaint =newPaint(paint);       citePaint.setTextSize(14);       citePaint.setStrokeWidth(1);       canvas.drawTextOnPath("http://www.android777.com", path, 28, 0, citePaint);       canvas.restore();                                                                                                                                          Paint tmpPaint =newPaint(paint);//小刻度画笔对象       tmpPaint.setStrokeWidth(1);                                                                                                                                          float  y=100;       int count = 60;//总刻度数                                                                                                                                          for(int i=0 ; i
    2015-12-03下载
    积分:1
  • BoolStack
    Simple stack for boolean values for Andriod.
    2013-11-18 21:39:06下载
    积分:1
  • SaveQQ
    说明:  一个完整的Android项目,首先进入界面输入账户密码进行登陆,若登陆账号没注册过则先进行保存,并提示保存成功否则提示登陆成功。(A complete Android project, first enter the interface to enter the account password for login, if the login account has not been registered, save it first, and prompt the successful save or prompt the successful login.)
    2019-04-30 15:17:16下载
    积分:1
  • phonegap 指南针实例源码下载
    phonegap 指南针实例源码下载
    2015-01-16下载
    积分:1
  • Android
    安卓开发,第一本书的源码,非常给力,大家欢迎下载(Andrews development, the first book of the source code, is to force everyone welcome to download)
    2016-07-12 22:45:25下载
    积分:1
  • android短信功能
    android短信功能 核心代码:package cn.edu.siso;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 android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import cn.edu.ContentProvide.Diary.DiaryColumns;import cn.edu.Info.MyInfo;import cn.edu.MyContentHandler.MyContentHandler;import cn.edu.siso.WareHouselistview.SMSBsharpturn;import cn.edu.siso.WareHouselistview.SMSFriendTab;import cn.edu.siso.WareHouselistview.SMSHavefanTab;import cn.edu.siso.WareHouselistview.SMSLoverTab;import cn.edu.siso.WareHouselistview.SMSSchooljoke;import cn.edu.siso.WareHouselistview.SMSapologize;import cn.edu.siso.WareHouselistview.SMShumorjokes;import cn.edu.siso.WareHouselistview.SMSlovewords;import cn.edu.siso.WareHouselistview.SMSmylove;import cn.edu.siso.WareHouselistview.SMSplayful;public class WareHouseActivity extends ListActivity { /** Called when the activity is first created. */ private List mp3Infos=null; private ListView listview; private Button back,updata; public static final String[] PROJECTION = new String[] { DiaryColumns._ID,DiaryColumns.TITLE, DiaryColumns.CREATED }; private Touch touch=new Touch(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.warehouse); listview=(ListView) findViewById(android.R.id.list); listview.setScrollingCacheEnabled(false); ShowListView(); back=(Button) findViewById(R.id.back); updata=(Button) findViewById(R.id.updata); back.setOnClickListener(new backlistener()); updata.setOnClickListener(new updatalistener()); back.setOnTouchListener(touch); updata.setOnTouchListener(touch); } private SimpleAdapter budildSimpleAdapter(List mp3Infos){ List list=new ArrayList(); for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) { MyInfo mp3Info = (MyInfo) iterator.next(); HashMap map=new HashMap(); map.put("name", mp3Info.getName()); map.put("listimageview", R.drawable.image); list.add(map); } SimpleAdapter listadapter=new SimpleAdapter(this, list, R.layout.textview, new String[]{"name","listimageview"}, new int[]{R.id.houseText,R.id.listimageview}); return listadapter ; } private void ShowListView(){ mp3Infos=pares(R.raw.information); SimpleAdapter listadapter= budildSimpleAdapter(mp3Infos); setListAdapter(listadapter); } public List pares(Object xmlname){ List info=new ArrayList(); try { SAXParserFactory factory=SAXParserFactory.newInstance(); XMLReader reader=factory.newSAXParser().getXMLReader(); MyContentHandler mycontenthandler=new MyContentHandler(info); reader.setContentHandler(mycontenthandler); reader.parse(new InputSource(getResources().openRawResource((Integer) xmlname))); } catch (Exception e) { e.printStackTrace(); } return info; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub //MyInfo myinfo=mp3Infos.get(position); //System.out.println("myinfo-------" myinfo); Intent intent =new Intent(); switch(position){ case 0: intent.setClass(WareHouseActivity.this, SMSapologize.class); startActivity(intent); break; case 1: intent.setClass(WareHouseActivity.this, SMSmylove.class); startActivity(intent); break; case 2: intent.setClass(WareHouseActivity.this, SMSlovewords.class); startActivity(intent); break; case 3: intent.setClass(WareHouseActivity.this, SMSHavefanTab.class); startActivity(intent); break; case 4: intent.setClass(WareHouseActivity.this, SMSLoverTab.class); startActivity(intent); break; case 5: intent.setClass(WareHouseActivity.this, SMSplayful.class); startActivity(intent); break; case 6: intent.setClass(WareHouseActivity.this, SMSBsharpturn.class); startActivity(intent); break; case 7: intent.setClass(WareHouseActivity.this, SMShumorjokes.class); startActivity(intent); break; case 8: intent.setClass(WareHouseActivity.this, SMSFriendTab.class); startActivity(intent); break; case 9: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 10: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 11: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 12: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 13: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 14: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 15: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; case 16: intent.setClass(WareHouseActivity.this, SMSSchooljoke.class); startActivity(intent); break; } super.onListItemClick(l, v, position, id); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){ //需要处理 Intent intent =new Intent(); intent.setClass(WareHouseActivity.this, InformationActivityActivity.class); startActivity(intent); finish(); } return false; } class backlistener implements Button.OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(WareHouseActivity.this,InformationActivityActivity.class); startActivity(intent); finish(); }} class updatalistener implements Button.OnClickListener{ @Override public void onClick(View v) { ShowListView(); }}}
    2014-11-09下载
    积分:1
  • Android
    Android开发指南中文版,特别收藏版(Chinese version of Android Development Guide, Special Collections Edition)
    2011-06-01 11:27:22下载
    积分:1
  • Weather
    一个基于android平台开发的天气更新软件,很实用(Based on android platform development weather update software, is very practical )
    2012-04-16 17:25:21下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载