# Titanium.Media.AudioRecorder

> An audio recorder object used for recording audio from the device microphone.

- Source: https://titaniumsdk.com/docs/sdk/13.3.1/Titanium.Media.AudioRecorder
- Titanium SDK version: 13.3.1
- Kind: proxy
- Platforms: Android, iPhone, iPad, macOS
- Since: Titanium SDK iPhone 0.9, iPad 0.9, Android 6.2.0
- Extends: Titanium.Proxy
- Inheritance: Titanium.Proxy

Use the [Titanium.Media.createAudioRecorder](https://titaniumsdk.com/docs/sdk/Titanium.Media.md#createAudioRecorder) method to create an audio recorder.

Ensure to request the permissions for audio-recording before starting a new record-session.
This can be done by using [Titanium.Media.hasAudioRecorderPermissions](https://titaniumsdk.com/docs/sdk/Titanium.Media.md#hasAudioRecorderPermissions) to check whether
audio-permissions are granted and [Titanium.Media.requestAudioRecorderPermissions](https://titaniumsdk.com/docs/sdk/Titanium.Media.md#requestAudioRecorderPermissions) to 
request audio-permissions. 

**Android Platform Note**: On Android, you also need to include the following permission
into the `<android>` section of the tiapp.xml:

``` xml
<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
    </manifest>
</android>
```

## Example: Audio Recorder Example

The following code-example creates a window that controls the audio-recorder flow.

``` js
var window = Ti.UI.createWindow({
  backgroundColor: '#fff'
});

var recordStart = Ti.UI.createButton({
  title: 'Start',
  top: 10
});

var recordPause = Ti.UI.createButton({
  title: 'Pause',
  top: 60
});

var recordStop = Ti.UI.createButton({
  title: 'Stop',
  top: 110
});

var recordPlay = Ti.UI.createButton({
  title: 'Play',
  top: 160
});

var audioRecorder = Ti.Media.createAudioRecorder();
var record;
var audioPlayer;

window.addEventListener('open', function(e) {
  if (!Ti.Media.hasAudioRecorderPermissions()) {
    Ti.Media.requestAudioRecorderPermissions(function(e) {
      if (e.success) {
        window.add(recordStart);
      }
    });
  } else {
    window.add(recordStart);
  }
});

recordStart.addEventListener('click', function(e) {
  audioRecorder.start();
});

recordPause.addEventListener('click', function(e) {
  if (audioRecorder.getPaused()) {
    recordPause.title = 'Pause';
    audioRecorder.resume()
  } else {
    recordPause.title = 'Resume';
    audioRecorder.pause();
  }
});

recordStop.addEventListener('click', function(e) {
  record = audioRecorder.stop();
  Ti.API.info(record.nativePath);
});

recordPlay.addEventListener('click', function(e) {
  audioPlayer = Ti.Media.createAudioPlayer({
    url: record.nativePath
  });
  audioPlayer.start();
});

window.add(recordPause);
window.add(recordStop);
window.add(recordPlay);

window.open();
```

## Properties

### compression

- Type: Number
- Platforms: iPhone, iPad, macOS
- Default: `<Titanium.Media.AUDIO_FORMAT_LINEAR_PCM>`

Audio compression to be used for the recording.

Accepts: `Titanium.Media.AUDIO_FORMAT_AAC`, `Titanium.Media.AUDIO_FORMAT_ALAW`, `Titanium.Media.AUDIO_FORMAT_APPLE_LOSSLESS`, `Titanium.Media.AUDIO_FORMAT_ILBC`, `Titanium.Media.AUDIO_FORMAT_IMA4`, `Titanium.Media.AUDIO_FORMAT_LINEAR_PCM`, `Titanium.Media.AUDIO_FORMAT_ULAW`

### format

- Type: Number
- Platforms: iPhone, iPad, macOS
- Default: `<Titanium.Media.AUDIO_FILEFORMAT_CAF>`

Audio format to be used for the recording.

Accepts: `Titanium.Media.AUDIO_FILEFORMAT_3GP2`, `Titanium.Media.AUDIO_FILEFORMAT_3GPP`, `Titanium.Media.AUDIO_FILEFORMAT_AIFF`, `Titanium.Media.AUDIO_FILEFORMAT_AMR`, `Titanium.Media.AUDIO_FILEFORMAT_CAF`, `Titanium.Media.AUDIO_FILEFORMAT_MP3`, `Titanium.Media.AUDIO_FILEFORMAT_MP4`, `Titanium.Media.AUDIO_FILEFORMAT_MP4A`, `Titanium.Media.AUDIO_FILEFORMAT_WAVE`

### paused

- Type: Boolean
- Platforms: Android, iPhone, iPad, macOS
- Permission: read-only

Indicates if the audio recorder is paused.

### recording

- Type: Boolean
- Platforms: Android, iPhone, iPad, macOS
- Permission: read-only

Indicates if the audio recorder is recording.

### stopped

- Type: Boolean
- Platforms: Android, iPhone, iPad, macOS
- Permission: read-only

Indicates if the audio recorder is stopped.

## Methods

### pause

- Platforms: Android, iPhone, iPad, macOS

Pauses the current audio recording.

### resume

- Platforms: Android, iPhone, iPad, macOS

Resumes a paused recording.

### start

- Platforms: Android, iPhone, iPad, macOS

Starts an audio recording.

### stop

- Platforms: Android, iPhone, iPad, macOS

Stops the current audio recording and returns the recorded audio file.

Returns: Titanium.Filesystem.File

## Inherited members

7 members are inherited. Each is documented on the type that declares it.

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/13.3.1/Titanium.Proxy.md): `addEventListener`, `apiName`, `applyProperties`, `bubbleParent`, `fireEvent`, `lifecycleContainer`, `removeEventListener`

---

- This corpus documents Titanium SDK 13.4.1. Anything here that does not name a version describes 13.4.1.
- Titanium is maintained by TiDev. The Appcelerator toolchain is retired: there is no `appc` CLI, no Appcelerator Studio and no hosted build service. The supported CLI is `titanium` on npm, invoked as `ti`.

