вот код, показывающий проблему, сначала html, показывающий 3 утверждения, которые я хотел бы записать пользователю, и кнопку захвата звука, а затем файл ts:
Когда вы нажимаете Кнопка «Захватить аудио» сначала запрашивает разрешение на использование микрофона, затем открывает полноэкранный микрофон, в котором отображаются утверждения, которые я хотел бы прочитать, чтобы пользователь мог записывать, но не мог видеть утверждения, в которые он должен читать микрофон.
Информация о версии ioni c 6.6.0
plugins: cordova-plugin-device 2.0.3 "Устройство" cordova-plugin-file 6.0.2 "Файл" cordova- plugin-ioni c -клавиатура 2.2.0 "cordova-plugin-ioni c -клавиатура" cordova-plugin-ioni c -webview 4.2.0 "cordova-plugin-ioni c -webview" cordova- plugin-media 5.0.3 "Медиа" cordova-plugin-media-capture 3.0.3 "Захват" cordova-plugin-nativeaudio 3.0.9 "Cordova Native Audio" cordova-plugin-splashscreen 5.0.3 "Всплеск экрана" cordova-plugin- статусбар 2.4.3 "StatusBar" cordova-plugin-whitelist 1.3.4 «Белый список»
здесь html
<ion-content>
<ion-grid>
<ion-row>
<ion-col>
<h1 class="ion-text-center">Record these statments</h1><br>
<p class="ion-text-center">
Go somewhere quiet.. and record these statements with as much enthusiasim as you can!
</p>
1. I am worthy of success. I am worthy of peace.<br><br>
2. I accept myself as I am. I love myself as I am. I release all limiting thoughts. I honor myself always.<br><br>
3. I am fearless. I am Powerful.<br><br>
<div class="ion-text-center">
<ion-button color="danger" (click)="captureAudio()">
<ion-icon name="mic"></ion-icon>Capture Audio</ion-button>
</div>
<ion-list style="background-color:#f0f0f0">
<ion-radio-group value="1" required id="recordingradio">
<ion-item *ngFor="let file of mediaFiles" tappable (click)="play(file)" text-wrap>
My Recording
<ion-radio id="recording" name="recording" required value="1"></ion-radio><br><br><br>
<ion-button slot="end" color="success" href="/results" id="submit">
<ion-icon name="arrow-forward-circle" slot="start"></ion-icon>Continue</ion-button>
</ion-item>
</ion-radio-group>
</ion-list>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
Вот файл .ts
import { Component, OnInit, ViewChild } from '@angular/core';
import { NavController } from '@ionic/angular';
import { MediaCapture, MediaFile, CaptureError, CaptureVideoOptions } from '@ionic-native/media-capture/ngx';
import { Storage } from '@ionic/storage';
import { Media, MediaObject } from '@ionic-native/media/ngx';
import { File } from '@ionic-native/file/ngx';
const MEDIA_FILES_KEY = 'mediaFiles';
@Component({
selector: 'app-confidence2',
templateUrl: './confidence2.page.html',
styleUrls: ['./confidence2.page.scss'],
})
export class Confidence2Page implements OnInit {
mediaFiles = []
constructor(public navCtrl: NavController, private mediaCapture: MediaCapture, private storage: Storage, private media: Media, private file: File) {}
ionViewDidLoad() {
this.storage.get(MEDIA_FILES_KEY).then(res => {
this.mediaFiles = JSON.parse(res) || [];
});
}
captureAudio(){
this.mediaCapture.captureAudio().then(res => {
this.storeMediaFiles(res);
}, (err: CaptureError) => console.error(err));
}
play(myFile) {
if (myFile.name.indexOf('wav.') > -1) {
const audioFile: MediaObject = this.media.create(myFile.localURL);
audioFile.play();
} else {
let path = this.file.dataDirectory + myFile.name;
let url = path.replace(/file^\/\//, '');
}
}
storeMediaFiles(files) {
console.log('store: ', files);
this.storage.get(MEDIA_FILES_KEY).then(res => {
if (res) {
let arr = JSON.parse(res);
arr = arr.concat(files);
this.storage.set(MEDIA_FILES_KEY, JSON.stringify(arr));
} else {
this.storage.set(MEDIA_FILES_KEY, JSON.stringify(files))
}
this.mediaFiles = this.mediaFiles.concat(files);
})
}
ngOnInit() {
}
}