私はIonicを使用して音楽プレーヤーアプリケーションを構築していますので、コードソーバプラグインを使用してファイルストレージから音楽ファイルをスキャンして、 .PS私はIonicにかなり新しいです。ファイルcordovaプラグインを使用してionicでメディアファイルをスキャンする
0
A
答えて
1
音楽ファイルにアクセスして再生する必要があります。ネイティブのものにアクセスするのに役立ついくつかのCordovaプラグインがあります。プロジェクトに1つまたは複数のプラグインを追加した後、私はgithub reposにかなり便利なドキュメントと例があることを発見しました。 npmページにはこれらのリンクがあります。アクセスするファイルの場合
- コルドバ - プラグインファイルがある:https://www.npmjs.com/package/cordova-plugin-file
- コルドバ - プラグインiospicker:https://www.npmjs.com/package/cordova-plugin-iosaudiopicker
- コルドバ - プラグインmediapicker:https://github.com/an-rahulpandey/cordova-plugin-mediapickerに基づいて
は、ターゲティングするデバイスタイプ、およびユーザーがメディアファイルにアクセスすることを想定している場合は、メディアファイルの1つまたはすべてを使用する必要があります。
- コルドバ・プラグインメディア:ファイル再生するため、
(あなたがオーディオストリームAPIを使用している場合)https://www.npmjs.com/package/cordova-plugin-media
- コルドバ・プラグイン・ストリーミング・メディアを:https://www.npmjs.com/package/cordova-plugin-streaming-media
- あなたは可能性があるもHTML5メディアを使用することができる:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video
0
このコードは、すべてのフォルダとファイルの一覧が表示されます:
import { File } from "@ionic-native/file";
import { Diagnostic } from "@ionic-native/diagnostic";
constructor(
...
public file: File,
public diagnostic: Diagnostic
){
// -------------------------
listFileSys(which){
// <which> chooses the file system - see switch below
this.jcDebug += "\n" + "listFileSysSKOFLO(" + which + ")";
let fileSysArray = [];
let basePath = "";
let tag = "unknown";
// ************** RECURSE *************
let jcListDir = (thisDir)=>{
tag = "jcListDir: [" + thisDir + "]";
this.file.listDir(basePath, thisDir)
.then((data)=>{
tag = "listDir:" + thisDir;
this.jcError += "\n" + tag + ":" + JSON.stringify(data);
for(let ii = 0; ii < data.length; ii += 1){
this.jcError += "\n" + data[ii].name + (data[ii].isDirectory? " [D]" : " [F]");
let currentPath = thisDir;
currentPath += (currentPath.length ? "/" : "");
currentPath += data[ii].name;
this.jcError += "\n" + "currentPath:" + currentPath;
fileSysArray.push(currentPath);
if(data[ii].isDirectory && ok2recurse){
jcListDir(currentPath); // RECURSE !!!
}
}
}, (errData)=>{
tag = "listDir";
this.jcError += "\n" + tag + ":ERR:" + JSON.stringify(errData);
});
};
// ************** RECURSE *************
// ***********************
let runListDir =()=>{
this.jcDebug += "\n" + "basePath:" + basePath;
// !!! START listing from basePath !!!
jcListDir(".");
}
// ***********************
switch(which)
{
case 1:
this.diagnostic.getExternalSdCardDetails()
.then((data) => {
this.jcDebug += "\n" + "sd:" + JSON.stringify(data);
this.jcDebug += "\n" + "Number of cards: " + data.length;
for(let ii = 0; ii < data.length; ii += 1){
let thisElem = data[ii];
if(thisElem.type.toLowerCase() === "application" && thisElem.canWrite){
basePath = thisElem.filePath;
break;
}
}
if(!basePath){
this.jcDebug += "\n" + "no SD card found";
return;
}
runListDir();
}, (errData)=>{
tag = "getExternalSdCardDetails";
this.jcError += "\n" + tag + ":ERR:" + JSON.stringify(errData);
});
break;
case 2:
basePath = this.file.externalDataDirectory;
this.jcError += "\n" + "externalDataDirectory:" + basePath;
runListDir();
break;
case 3:
basePath = this.file.dataDirectory;
this.jcError += "\n" + "dataDirectory:";
runListDir();
break;
default:
alert("which???:" + which);
return;
}
// wait for all to comnplete, then show
// assume 1000 ms is adequate delay per promise
let lastFileSysLen = -1
let checkCount = 30; // max 30 * 1000 ms = 30 seconds
// ************** RECURSE *************
let checkComplete =() => {
this.jcDebug += "\n" + "checkComplete " + checkCount + " [" + fileSysArray.length + "]";
setTimeout(()=>{
// fileSysArr length stable?
if(fileSysArray.length === lastFileSysLen){
checkCount = 0;
}
lastFileSysLen = fileSysArray.length;
checkCount -= 1;
if(checkCount > 0){
checkComplete(); // recurse
} else {
// STOP !!! and show FileSysArray
this.jcInfo += "\n" + "show FileSysArray";
this.jcInfo += "\n" + "fileSysArray.length = " + " [" + fileSysArray.length + "]";
fileSysArray.sort();
for(let elem of fileSysArray){
this.jcInfo += "\n" + elem;
}
}
}, 1000);
};
// ************** RECURSE *************
checkComplete();
}
関連する問題
- 1. screenshotプラグインを使用してionic/cordovaのボタンでスクリーンショットを撮る
- 2. Ionic 1アプリのCordovaプラグイン(Typescriptを使用)
- 3. cordovaプラグインをionicで使用する方法2
- 4. Ionic 2/TypeScriptで(Cordova)プラグインを使用するには?
- 5. アンドロイド用cordovaファイル転送プラグインを使用してファイルをダウンロード
- 6. イオン性ネイティブではないIONICのCordovaプラグインを使用
- 7. Ionic 3:cordovaプラグインの使い方
- 8. Ionic、cordovaプラグインの使い方、ng-cordova/typescriptではなく
- 9. Firebase Inviteプラグインfor Ionic/Cordova
- 10. ネイティブCordovaプラグインの値を取得してIonicに表示する
- 11. Cordovaプラグインを使用せずにIonic 2でSMSを送信する
- 12. IONIC 3 - Razorpay - ウェブアプリケーション用に同じcordovaプラグインを使用できます
- 13. プラグインをCordova CLIで使用する
- 14. Cordova/Ionicを使用したモバイルWebオーディエンスネットワーク
- 15. facebook app ionic(cordova phonegap)を使用して招待する
- 16. Ionic 2 Cordovaプラグインを使用して携帯電話でオーディオファイルを取得するには?
- 17. Ionic 3 - cordovaプラグインレポの使い方私Ionic3アプリでこのプラグインを使用しようとして
- 18. Cordovaプラグインを使用してiOSギャラリーに動画ファイルを保存します。
- 19. cordovaプラグインを使用してOTPを検出する方法
- 20. Cordovaプラグインを使用してSMSを送受信する
- 21. .aarファイルを使用してcordovaプラグインからアクティビティを開始できません
- 22. 角4のコンポーネントでcordovaプラグインを使用
- 23. Cordova/Ionic 2を使用してネイティブマップビルド用の空白マップを取得する
- 24. IPアドレスを使用してネットワークプリンタに接続するためのIonicネイティブまたはCordovaプラグイン
- 25. Ionic 3でcordova-plugin-android-permissionsを使用するには?
- 26. Ionic cordovaプラグインのビルドウィンドウがCLIで動作しない
- 27. ソーシャル共有プラグインがIonic Cordovaで動作しません
- 28. Azureモバイルサービスを使用しているCordova/IonicプロジェクトにLive SDKを追加する
- 29. ionic v2に非ネイティブcordovaプラグインをインストールできない
- 30. cordovaプラグインをionicで使用するにはどうすればいいですか?
メディアファイルをローカルネットワークで安全に配信できるようにするプラグインについて知っていますか?私はコンピュータの音楽ファイルにアクセスしたい。 – arjun