react-native-vad
Version:
VAD / Voice activation detection library for React Native
48 lines (37 loc) • 1.42 kB
JavaScript
const { withAndroidManifest, withProjectBuildGradle } = require("@expo/config-plugins");
function withReactNativeVad(config) {
// Add audio permission to AndroidManifest.xml
config = withAndroidManifest(config, async (config) => {
const androidManifest = config.modResults;
// Add RECORD_AUDIO permission if not already present
if (!androidManifest.manifest["uses-permission"]) {
androidManifest.manifest["uses-permission"] = [];
}
const permissions = androidManifest.manifest["uses-permission"];
const hasPermission = permissions.some(
(permission) => permission["$"]["android:name"] === "android.permission.RECORD_AUDIO"
);
if (!hasPermission) {
permissions.push({ $: { "android:name": "android.permission.RECORD_AUDIO" } });
}
return config;
});
// Modify android/build.gradle
config = withProjectBuildGradle(config, async (config) => {
const buildGradle = config.modResults.contents;
const vadMaven = `
// react-native-vad added
maven { url("${project(':react-native-vad').projectDir}/libs") }
// End react-native-vad added
`;
if (!buildGradle.includes("react-native-vad added")) {
config.modResults.contents = buildGradle.replace(
/repositories\s*{/,
`repositories {\n${vadMaven}`
);
}
return config;
});
return config;
}
module.exports = withReactNativeVad;