CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2ME

录音到RMS中,没有声音...

楼主kmlzkma(我去你妈)2005-05-22 11:16:08 在 Java / J2ME 提问

片段如下:  
   
  .....................                
  p   =   Manager.createPlayer("capture://audio");  
  p.realize();  
  rc   =   (RecordControl)   p.getControl("RecordControl");  
  ByteArrayOutputStream   output   =   new   ByteArrayOutputStream();  
          rc.setRecordStream(output);  
  rc.startRecord();  
  p.start();  
  Thread.currentThread().sleep(3000);  
  p.stop();  
  byte   b[]   =   output.toByteArray();  
  rs.open();  
  System.out.println(id   =   rs.addRecord(b,   0,   b.length););  
  System.out.println("record   sound   end!");  
  rc.stopRecord();  
  rc.commit();  
  放音功能如下:  
  .............................  
  System.out.println("play   is   begin;");  
          InputStream   is   =   new   ByteArrayInputStream(rs.getRecord(id));  
  p   =   Manager.createPlayer(is,   "audio/X-wav");  
          p.start();  
  System.out.println("play   is   end;");  
   
   
  为啥不好使呢?谢谢 问题点数:100、回复次数:19Top

1 楼cuilichen(fjfjfjfj)回复于 2005-05-22 11:36:16 得分 0

使用流进行播放应该没有问题的。  
   
  有更多的信息吗?Top

2 楼kmlzkma(我去你妈)回复于 2005-05-22 20:43:27 得分 0

import   javax.microedition.media.Player;  
  import   javax.microedition.media.Manager;  
  import   javax.microedition.media.MediaException;  
  import   javax.microedition.media.control.VideoControl;  
  import   javax.microedition.media.control.RecordControl;  
  import   javax.microedition.lcdui.Command;  
  import   javax.microedition.lcdui.CommandListener;  
  import   javax.microedition.lcdui.Display;  
  import   javax.microedition.lcdui.Displayable;  
  import   javax.microedition.lcdui.Form;  
  import   javax.microedition.lcdui.Gauge;  
  import   javax.microedition.lcdui.Graphics;  
  import   javax.microedition.lcdui.Item;  
  import   javax.microedition.lcdui.Display;  
  import   javax.microedition.lcdui.Image;  
  import   javax.microedition.midlet.MIDlet;  
  import   java.io.IOException;  
  import   java.io.InputStream;  
  import   java.io.ByteArrayInputStream;  
  import   java.io.ByteArrayOutputStream;  
   
  public   class   AudioForm   extends   Form   implements   CommandListener/*,   Runnable*/   {  
  private   Player   p;  
   
  private   Game   main;  
   
  private   VideoControl   vc   =   null;  
   
  private   Command   exitCommand,   commit,playCommand;  
   
  private   Save   save;  
   
  private   Gauge   gauge;  
   
  private   boolean   run;  
   
  private   int   id;  
   
  public   AudioForm(Game   main)   {  
  super("请留言:");  
  this.main   =   main;  
  run   =   true;  
  append(gauge   =   new   Gauge("record",   true,   3,   0));  
  addCommand(exitCommand   =   new   Command("离开",   Command.SCREEN,   1));  
  addCommand(commit   =   new   Command("录音",   Command.SCREEN,   1));  
  setCommandListener(this);  
  save   =   Save.getSaveInstance();  
  }  
   
  public   void   recordSound()   {  
  RecordControl   rc;  
  try   {  
  //   Create   a   DataSource   that   captures   live   audio.  
  p   =   Manager.createPlayer("capture://audio");  
  p.realize();  
  //   Get   the   RecordControl,   set   the   record   location,   and  
  //   start   the   Player   and   record   for   3   seconds.  
  rc   =   (RecordControl)   p.getControl("RecordControl");  
  ByteArrayOutputStream   output   =   new   ByteArrayOutputStream();  
          rc.setRecordStream(output);  
  rc.startRecord();  
  System.out.println("record   sound   begin!");  
  new   Thread(this).start();  
  p.start();  
  Thread.currentThread().sleep(3000);  
  p.stop();  
  byte   b[]   =   output.toByteArray();  
  save.open();  
  System.out.println(id   =   save.addRecord(b));  
  run   =   false;  
  System.out.println("record   sound   end!");  
  rc.stopRecord();  
  rc.commit();  
  addCommand(playCommand   =   new   Command("play",   Command.SCREEN,   1));  
  }   catch   (IOException   ioe)   {  
  System.err.println(ioe);  
  }   catch   (MediaException   me)   {  
  System.err.println(me);  
  }   catch   (InterruptedException   e)   {  
  System.err.println(e);  
  }  
  }  
   
  public   void   run()   {  
  while   (run)   {  
  int   v   =   (int)   (p.getTimeBase().getTime()   /   1000000L);  
  gauge.setValue(v);  
  }  
  }  
   
  public   void   playSound()   {  
  try   {  
  System.out.println("play   is   begin;");  
          InputStream   is   =   new   ByteArrayInputStream(save.getRecord(id));  
  p   =   Manager.createPlayer(is,   "audio/X-wav");  
          p.start();  
  System.out.println("play   is   end;");  
  }   catch   (IOException   ioe)   {  
  System.err.println(ioe);  
  }   catch   (MediaException   me)   {  
  System.err.println(me);  
  }  
  }  
   
  public   void   commandAction(Command   c,   Displayable   d)   {  
  if   (c   ==   exitCommand)   {  
  save.close();  
  try   {  
  p.stop();  
  }   catch   (MediaException   me)   {  
  System.err.println(me);  
  }  
  if   (p   !=   null)   {  
  p.close();  
  p.deallocate();  
  p   =   null;  
  }  
  main.showMenu();  
  }   else   if   (c   ==   commit)   {  
  recordSound();  
  }else   if(c   ==   playCommand){  
  playSound();  
  }  
  }  
  }  
   
  //Save类:  
  import   javax.microedition.rms.RecordStore;  
  import   javax.microedition.rms.RecordStoreNotFoundException;  
  import   javax.microedition.rms.RecordStoreFullException;  
  import   javax.microedition.rms.RecordStoreException;  
  import   javax.microedition.rms.RecordStoreNotOpenException;  
  import   javax.microedition.rms.InvalidRecordIDException;  
  import   java.util.Date;  
  import   java.io.ByteArrayOutputStream;  
  import   java.io.ByteArrayInputStream;  
  import   java.io.DataOutputStream;  
  import   java.io.DataInputStream;  
  import   java.io.IOException;  
   
  public   class   Save   {  
   
  private   RecordStore   rs   =   null;  
   
  private   static   final   Save   save_instance   =   new   Save();  
   
  /*"分数||时间||姓名||留言||照片"*/  
   
  private   Save()   {  
  open();  
  try{  
  if   (rs.getNumRecords()   ==   0)   {  
  String   record   =   "0||"+new   Date()+"||无名||超过0分就能赢我!";  
  System.out.println(addRecord(record));  
  byte[]   b   =   null;  
  addRecord(b);  
  addRecord(record);  
  addRecord(b);  
  addRecord(record);  
  addRecord(b);  
  }  
  }   catch   (RecordStoreNotOpenException   rsnoe)   {  
  System.err.println(rsnoe);  
  }  
  }  
  public   void   open(){  
  try   {  
  rs   =   RecordStore.openRecordStore("kmlzkma",   true);  
  }   catch   (RecordStoreFullException   rsfe)   {  
  System.err.println(rsfe);  
  }   catch   (RecordStoreException   rse)   {  
  System.err.println(rse);  
  }  
  }  
  public   static   Save   getSaveInstance()   {  
  return   save_instance;  
  }  
   
  public   int   addRecord(byte[]   pic)   {  
  try   {  
  if(pic   ==   null)     return   rs.addRecord(null,   0,   0);  
  return   rs.addRecord(pic,   0,   pic.length);  
  }   catch   (Exception   e)   {  
  System.err.println(e);  
  }  
  return   0;  
  }  
   
  public   int   addRecord(String   string)   {  
  ByteArrayOutputStream   baos   =   new   ByteArrayOutputStream();  
  DataOutputStream   dos   =   new   DataOutputStream(baos);  
  try   {  
  dos.writeUTF(string);  
  byte[]   data   =   baos.toByteArray();  
  return   rs.addRecord(data,   0,   data.length);  
  }   catch   (IOException   ioe)   {  
  System.err.println(ioe);  
  }   catch   (Exception   e)   {  
  System.err.println(e);  
  }  
  return   0;  
  }  
  public   void   setRecord(int   num,byte[]   pic)   {  
  try   {  
  rs.setRecord(num,pic,   0,   pic.length);  
  }   catch   (Exception   e)   {  
  System.err.println(e);  
  }  
  }  
   
  public   void   setRecord(int   num,String   string)   {  
  ByteArrayOutputStream   baos   =   new   ByteArrayOutputStream();  
  DataOutputStream   dos   =   new   DataOutputStream(baos);  
  try   {  
  dos.writeUTF(string);  
  byte[]   data   =   baos.toByteArray();  
  rs.setRecord(num,data,   0,   data.length);  
  }   catch   (IOException   ioe)   {  
  System.err.println(ioe);  
  }   catch   (Exception   e)   {  
  System.err.println(e);  
  }  
  }  
   
  public   byte[]   getRecord(int   num)   {  
  try   {  
  return   rs.getRecord(num);  
  }   catch   (RecordStoreNotOpenException   rsnoe)   {  
  System.err.println(rsnoe);  
  }   catch   (InvalidRecordIDException   ire)   {  
  System.err.println(ire);  
  }   catch   (RecordStoreException   rse)   {  
  System.err.println(rse);  
  }  
  return   null;  
  }  
   
  public   String   getStringRecord(int   num)   {  
  try   {  
  byte[]   data   =   rs.getRecord(num);  
  ByteArrayInputStream   bais   =   new   ByteArrayInputStream(data);  
  DataInputStream   dis   =   new   DataInputStream(bais);  
  return   dis.readUTF();  
  }   catch   (RecordStoreNotOpenException   rsnoe)   {  
  System.err.println(rsnoe);  
  }   catch   (InvalidRecordIDException   ire)   {  
  System.err.println(ire);  
  }   catch   (RecordStoreException   rse)   {  
  System.err.println(rse);  
  }   catch   (IOException   ioe)   {  
  System.err.println(ioe);  
  }  
  return   null;  
  }  
   
  public   void   close()   {  
  try   {  
  rs.closeRecordStore();  
  }   catch   (RecordStoreNotOpenException   rsnoe)   {  
  System.err.println(rsnoe);  
  }   catch   (RecordStoreException   rse)   {  
  System.err.println(rse);  
  }  
  }  
  }Top

3 楼prok(换换口味)回复于 2005-05-23 10:13:41 得分 0

markTop

4 楼kmlzkma(我去你妈)回复于 2005-05-24 13:57:18 得分 0

如何录音到RMS而不是.wav文件中,我写的对么?  
  感觉是没有录进去呀,流那地方写的对么?谢谢Top

5 楼kmlzkma(我去你妈)回复于 2005-05-25 21:04:27 得分 0

狂顶Top

6 楼yuling1216()回复于 2005-05-26 15:45:33 得分 0

狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!狂顶!!!!!Top

7 楼kmlzkma(我去你妈)回复于 2005-05-27 12:03:05 得分 0

嗷!嗷!嗷!Top

8 楼kmlzkma(我去你妈)回复于 2005-05-28 10:24:34 得分 0

汪!汪!汪!Top

9 楼39827140(不想穿裤叉)回复于 2005-05-29 17:49:30 得分 0

你是不是受刺激了?Top

10 楼kmlzkma(我去你妈)回复于 2005-05-30 09:36:50 得分 0

没能力解决问题就闭嘴看别人怎么做的.Top

11 楼prok(换换口味)回复于 2005-05-30 15:36:13 得分 0

听说不是所有手机都支持得.Top

12 楼yyworld()回复于 2005-05-30 16:38:30 得分 50

你的播放格式是audio/X-wav。首先要确定录音时存储的格式,多数手机默认是储存为amr的。Top

13 楼kmlzkma(我去你妈)回复于 2005-05-31 07:40:06 得分 0

我不是放RMS里了么?还有格式么?  
  audio/x-tone-seq?Top

14 楼fage87295970(任我行)回复于 2005-05-31 09:07:30 得分 0

顶Top

15 楼sea2000cn(我想我是海)回复于 2005-06-08 08:25:22 得分 50

支持“yyworld()   ”的观点,多数手机默认是储存为amr的。  
  有些时候存储方式为μ-law(由amr转换来的)Top

16 楼geodetic()回复于 2005-06-08 13:01:36 得分 0

markTop

17 楼kmlzkma(我去你妈)回复于 2005-06-16 22:09:32 得分 0

对应与AMR就没办法了么?求教Top

18 楼hrlixiang(hrlx)回复于 2005-06-17 18:10:16 得分 0

用的是什么手机?Top

19 楼kmlzkma(我去你妈)回复于 2005-06-25 20:46:40 得分 0

西门子,c65Top

相关问题

  • 请问在PB中使用flash为何没有声音
  • jmstudio没有声音
  • 请问如何能判断出*.Wav文件中哪个地方是没有声音的?
  • 编程 如何正确把wav文件中那没有声音的空白区段删除
  • 没有声音的问题
  • 播放cd没有声音
  • XP耳麦没有声音
  • VC6.0没有声音怎么办
  • 为什么还是没有声音?
  • 急~~~~~我的麦没有声音呢~

关键词

  • media
  • player
  • start
  • recordcontrol
  • microedition
  • lcdui
  • import javax
  • gauge
  • bytearrayoutputstream
  • rc

得分解答快速导航

  • 帖主:kmlzkma
  • yyworld
  • sea2000cn

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo