今天开发了第一个andriod程序,测试录音和播放功能。源码是网上抄来的。

代码:

unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Media, System.IOUtils;

type
  TForm2 = class(TForm)
    btnStartRecord: TButton;
    btnStopRecord: TButton;
    imgOn: TLabel;
    btnPlay: TButton;
    procedure btnStartRecordClick(Sender: TObject);
    procedure btnStopRecordClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnPlayClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  FMicrophone: TAudioCaptureDevice;

implementation

{$R *.fmx}

procedure TForm2.btnPlayClick(Sender: TObject);
var
  a: TMediaPlayer;
begin
  a := TMediaPlayer.Create(Self);
  try
    a.FileName := TPath.GetHomePath + '/RecordTest.3GP';
    a.Play
  finally
    FreeAndNil(a);
  end;
end;

procedure TForm2.btnStartRecordClick(Sender: TObject);
//开始录音
begin
  FMicrophone := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
  if Assigned(FMicrophone) then
  begin
    FMicrophone.FileName := TPath.GetHomePath + '/RecordTest.3GP';
    try
      FMicrophone.StartCapture;
      imgOn.Visible := True;
    except
      on e: Exception do
      begin
        imgOn.Visible := False;
        ShowMessage( '设备不识别或不支持。' + e.Message);
      end
    end;
  end
  else
    ShowMessage('没有可用的麦克风。');
end;

procedure TForm2.btnStopRecordClick(Sender: TObject);
//停止录音
begin
  if Assigned(FMicrophone) then
  try
    if FMicrophone.State = TCaptureDeviceState.Capturing then
    begin
      FMicrophone.StopCapture;
      imgOn.Visible := False;
    end;
  except
    imgOn.Visible := False;
    ShowMessage('设备不识别或不支持');
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  imgOn.Visible := False;
end;

end.

几个问题:

1.发布:project->deployment,点击deploy就可以了。就可以产生一个APK文件,通过QQ传输到手机上,就可以安装运行了,好神奇。

2.运行时提示:setaudiosource failed,网上查了下,发现是权限问题,

在AndroidManifest.xml文件中添加:

<uses-permission
android:name="android.permission.RECORD_AUDIO">
</uses-permission>

3.230上的DELPHI7一直运行有问题,之前也没有去解决,一编译就出错,网上查了以后,删除hkey_current_user\software\embarcadero\bds\15.0就可以了。

4.家里测试的时候,XE7上一直无法显示连接的手机,后来换了一跟连接线就可以了,郁闷。

20160113第一个ANDRIOD开发日志的更多相关文章

  1. 一、项目基础架构(附GitHub地址)——以ABP为基础架构的一个中等规模的OA开发日志

    前言: 最近园子里ABP炒的火热.看了几篇对于ABP的介绍后,深感其设计精巧,实现优雅.个人感觉,ABP或ABP衍生品的架构设计,未来会成为中型Net项目的首选架构模式.如果您还不了解ABP是什么,有 ...

  2. 《Invert》开发日志05:终止

    今天终于看了久闻大名的<独立游戏大电影>,然后我就做了一个坑爹的决定:终止“Invert”项目的开发.没错,在还没正式开工之前,我就决定停掉这个项目,而且是永久终止.做这个决定并不是因为觉 ...

  3. NET-SNMP开发——日志输出

    NET-SNMP开发——日志输出 net-snmp的日志输出功能是很强大的,与日志输出相关函数声明在net-snmp-5.7.3\include\net-snmp\library\snmp_loggi ...

  4. 作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

    前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programme ...

  5. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

  6. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

  7. 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大

    讲到log4j,现在国外基本是没有开发者用这个框架了,原因大致有几点,1.功能太少:2.效率低下:3.线程锁bug等等等各种莫名其妙的bug一直都没解决. 其实最重要的是log4j的作者自己也放弃了l ...

  8. 通过编写一个简单的日志类库来加深了解C#的文件访问控制

    在程序的开发调试过程及发布运行后的状态监控中,日志都有着极其重要的分量,通过在关键逻辑节点将关键数据记录到日志文件当中能帮助我们尽快找到程序问题所在.网上有不少专业成熟的日志组件可用,比如log4ne ...

  9. 怎样才能提交一个让开发人员拍手叫好的bug单

    怎样才能提交一个让开发人员拍手叫好的bug单 软件测试人员写得最多的文档就是测试用例和BUG,现在测试用例和BUG都没有标准的模板,每个公司使用的缺陷管理工具都有可能不一样,如果你换了一家公司就有可能 ...

随机推荐

  1. vim 长句子中的上下移动

    当一个句子很长的时候,屏幕显示不下,就会分为多行,这个时候,你又想找到中间几行某部分的字母,怎么办?这个时候,先按下一个 g ,在按下 j / k ,就可以实现长句子的上下移动了.

  2. 使用File类列出指定位置的文件信息,包含该路径子目录下的文件信息

    public class Test{ public static void main(String [] args) { File f=new File("d:"); File [ ...

  3. 【最简单IOC容器实现】实现一个最简单的IOC容器

    前面DebugLZQ的两篇博文: 浅谈IOC--说清楚IOC是什么 IoC Container Benchmark - Performance comparison 在浅谈IOC--说清楚IOC是什么 ...

  4. Sublime Text 3 杂记

    Sublime Text 是一个功能强大的代码编辑器(收费,但可无限期试用).由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim.Sublime T ...

  5. Apache Kafka – KIP 32,33 Time Index

    32, 33都是和时间相关的, KIP-32 - Add timestamps to Kafka message 引入版本,0.10.0.0 需要给kafka的message加上时间戳,这样更方便一些 ...

  6. 线程中调用python win32com

    在python的线程中,调用win32com.client.Dispatch 调用windows下基于COM组件的应用接口, 需要在调用win32com.client.Dispatch前,调用pyth ...

  7. node-webkit 桌面开发 初入1

    node-webkit  是什么就不介绍了 注意官网的一句话 ”node-webkit is based on Chromium and node.js " 所以node-webkit 实际 ...

  8. 简单理解js的prototype属性

    在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...

  9. :active 为什么在ios上失效

    :active是针对鼠标,而手机上是没有鼠标,而是touchstart,所以早成了ios上不兼容 解决方法是: window.onload = function(){ document.body.ad ...

  10. string模块

    string模块 string模块包括了一些字符串常量, 并且有str对象的功能,主要用来生成一些字符串.字符串格式化等 参考: http://python.usyiyi.cn/python_278/ ...