---------------------------Android.mk---------------------------# Copyright 2006 The Android Open Source ProjectLOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)# common settings for all ASR builds, exports some variables for sub-makes
include $(ASR_MAKE_DIR)/Makefile.defsLOCAL_SRC_FILES:= \
src/AudioHardwareRecord.c \LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
$(ASR_ROOT_DIR)/audio/AudioIn/UNIX/include \LOCAL_CFLAGS := \LOCAL_SHARED_LIBRARIES := \
libsrec_jni \
libmedia \
libutils \
libhardware_legacy \
libSR_AudioIn \LOCAL_MODULE:= AudioHardwareRecordLOCAL_MODULE_TAGS := optionalLOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)include $(BUILD_EXECUTABLE)---------------------------Android.mk---------------------------
------------------------------AudioHardwareRecord.c----------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <string.h>
#include "audioinwrapper.h"#define SAMPLING_RATE 44100#define N_FRAMES_PER_BUFFER 512 /* low-level driver counts in terms of frames, not samples */
#define N_TUPLES_PER_FRAME 1 /* tuple: a set of samples (set of 1 if mono, set of 2 if stereo */#define N_CHANNELS_PER_TUPLE 1 /* 1: mono; 2: stereo */#define N_TUPLES_PER_BUFFER (N_FRAMES_PER_BUFFER * N_TUPLES_PER_FRAME)
#define N_SAMPLES_PER_BUFFER (N_TUPLES_PER_BUFFER * N_CHANNELS_PER_TUPLE)#define N_SECONDS_TO_RECORD 10
#define N_SAMPLES_TO_RECORD (SAMPLING_RATE * N_SECONDS_TO_RECORD * N_CHANNELS_PER_TUPLE)typedef short typeSample;/* store incoming samples here, then write to file at the end */
typeSample recordedSamples[N_SAMPLES_TO_RECORD];
int main(int argc, char* argv[])
{
int rc;
unsigned int i; memset(recordedSamples, 0, N_SAMPLES_TO_RECORD * sizeof(typeSample)); rc = AudioSetInputFormat(SAMPLING_RATE, N_CHANNELS_PER_TUPLE);
if (rc != 0)
{
printf("ERROR: AudioSetInputFormat() returns %d\n", rc);
exit(1);
} rc = AudioOpen();
if (rc < 0)
{
printf("ERROR: AudioOpen() returns %d (device handle/ID)\n", rc);
exit(1);
}
i = 0;
while (i <= N_SAMPLES_TO_RECORD - N_SAMPLES_PER_BUFFER)
{
rc = AudioRead(&(recordedSamples[i]), N_FRAMES_PER_BUFFER);
if (rc > 0)
i += (rc * N_TUPLES_PER_FRAME * N_CHANNELS_PER_TUPLE);
else
printf("ERROR: AudioRead() returns %d\n", rc);
} rc = AudioClose();
if (rc != 0)
{
printf("ERROR: AudioClose() returns %d\n", rc);
exit(1);
} /* write to file */
{
FILE *fpOutput;
char *szFilename = "output_AudioHardwareRecord.pcm"; fpOutput = fopen(szFilename, "wb");
if (fpOutput == NULL)
{
printf("ERROR: cannot create '%s'\n", szFilename);
exit(1);
}
fwrite(recordedSamples, sizeof(typeSample), i, fpOutput);
fclose(fpOutput);
} return 0;
}------------------------------AudioHardwareRecord.c----------------------------------------
include $(CLEAR_VARS)# common settings for all ASR builds, exports some variables for sub-makes
include $(ASR_MAKE_DIR)/Makefile.defsLOCAL_SRC_FILES:= \
src/AudioHardwareRecord.c \LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
$(ASR_ROOT_DIR)/audio/AudioIn/UNIX/include \LOCAL_CFLAGS := \LOCAL_SHARED_LIBRARIES := \
libsrec_jni \
libmedia \
libutils \
libhardware_legacy \
libSR_AudioIn \LOCAL_MODULE:= AudioHardwareRecordLOCAL_MODULE_TAGS := optionalLOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)include $(BUILD_EXECUTABLE)---------------------------Android.mk---------------------------
------------------------------AudioHardwareRecord.c----------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <string.h>
#include "audioinwrapper.h"#define SAMPLING_RATE 44100#define N_FRAMES_PER_BUFFER 512 /* low-level driver counts in terms of frames, not samples */
#define N_TUPLES_PER_FRAME 1 /* tuple: a set of samples (set of 1 if mono, set of 2 if stereo */#define N_CHANNELS_PER_TUPLE 1 /* 1: mono; 2: stereo */#define N_TUPLES_PER_BUFFER (N_FRAMES_PER_BUFFER * N_TUPLES_PER_FRAME)
#define N_SAMPLES_PER_BUFFER (N_TUPLES_PER_BUFFER * N_CHANNELS_PER_TUPLE)#define N_SECONDS_TO_RECORD 10
#define N_SAMPLES_TO_RECORD (SAMPLING_RATE * N_SECONDS_TO_RECORD * N_CHANNELS_PER_TUPLE)typedef short typeSample;/* store incoming samples here, then write to file at the end */
typeSample recordedSamples[N_SAMPLES_TO_RECORD];
int main(int argc, char* argv[])
{
int rc;
unsigned int i; memset(recordedSamples, 0, N_SAMPLES_TO_RECORD * sizeof(typeSample)); rc = AudioSetInputFormat(SAMPLING_RATE, N_CHANNELS_PER_TUPLE);
if (rc != 0)
{
printf("ERROR: AudioSetInputFormat() returns %d\n", rc);
exit(1);
} rc = AudioOpen();
if (rc < 0)
{
printf("ERROR: AudioOpen() returns %d (device handle/ID)\n", rc);
exit(1);
}
i = 0;
while (i <= N_SAMPLES_TO_RECORD - N_SAMPLES_PER_BUFFER)
{
rc = AudioRead(&(recordedSamples[i]), N_FRAMES_PER_BUFFER);
if (rc > 0)
i += (rc * N_TUPLES_PER_FRAME * N_CHANNELS_PER_TUPLE);
else
printf("ERROR: AudioRead() returns %d\n", rc);
} rc = AudioClose();
if (rc != 0)
{
printf("ERROR: AudioClose() returns %d\n", rc);
exit(1);
} /* write to file */
{
FILE *fpOutput;
char *szFilename = "output_AudioHardwareRecord.pcm"; fpOutput = fopen(szFilename, "wb");
if (fpOutput == NULL)
{
printf("ERROR: cannot create '%s'\n", szFilename);
exit(1);
}
fwrite(recordedSamples, sizeof(typeSample), i, fpOutput);
fclose(fpOutput);
} return 0;
}------------------------------AudioHardwareRecord.c----------------------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货