今天开发了第一个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. 事后分析报告(Postmortem Report)

    小组讨论照片 设想和目标 1.我们的团队项目为英语单词学习助手,名为“我爱记单词”.主要提供服务包括:单词查询,单词测试,单词记忆和中英互译.目前开发的是单机版本,用户可以根据自己的需求灵活的使用相应 ...

  2. SQL Injection(SQL注入漏洞)

    审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...

  3. 20145205 java语言实现数据结构实验一

    数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...

  4. Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)

    先上Java Web图 为了简化叙述,只写Java代码,然后控制台输出 使用[Random类]取得随机数 import java.util.Random; public class Fir { pub ...

  5. swif-throws异常抛出

    import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(c ...

  6. c语言编程

    1.常量和变量:变量是一块内存空间,该内存空间有类型约束,该内存中存放的数据可变. 变量三要素:类型,名称,值.常量:常量的数据永远不变,a:自变量,b:符合常量,c:预定义常量. 2.运算符和返回类 ...

  7. P1041 传染病控制

    #include <bits/stdc++.h> using namespace std; const int maxn = 301; std::vector<int> son ...

  8. 制作手机相册 全屏滚动插件fullpage.js

    今天是端午自己做了一个小的送祝福链接  这里用到了fullpage插件 $('#container').fullpage({ navigation: false,        //navigatio ...

  9. C# 获取计算机信息

    //C#获取当前计算机的系统信息 //系统标识符和版本号 string strSystem = Environment.OSVersion.ToString(); //获取映射到进程上下文的物理内存量 ...

  10. 关于smarty的一些个人笔记

    注释为{注释} 注意下面代码中<%extends file="路径"%>和<%widget name="路径"%>这两个路径中的区别 c ...