Когда я использую @ ioni c -native / Media-Capture, микрофон закрывает экран ... Может ли он отображать сценарий во время записи микрофона? - PullRequest
0 голосов
/ 17 апреля 2020

вот код, показывающий проблему, сначала 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() {
  }
}
...