:AssetManager詳細について
if (player == null)
{
player = new MediaPlayer();
}
AssetFileDescriptor afd = Assets.OpenFd("filenameinAssetsfolder.mp3");
player.Reset();
player.SetDataSource(afd.FileDescriptor);
player.Prepare();
player.Start();
:あなただけのこの操作を行う必要がありそうです。
しかし、パラメータとしてfilePath
を使用することに関する戦略を検討する必要があります。代わりに、string fileName
またはint resource
を使用することを検討してください。
assets
またはraw
フォルダからファイルを取得するには、AndroidのfilePath
を使用してファイルを取得することはできません。代わりに、これはAsssetManager
を使用するか、hereのようにResource
を使用して行われます。
else
節が不要なため、コードを少し最適化しました。
資産フォルダ
assets
フォルダからファイルにアクセスしようとするときは、ファイルの名前で(this
があなたのActivity
のContext
です)this.Assets
から静的メソッドOpenFd
を使用する必要があります。これは次のようにあなたがDataSource
として使用することができますAssetFileDescriptor
返します。
protected MediaPlayer player;
public void StartPlayer(string fileName)
{
if (player == null)
player = new MediaPlayer();
var fileDescriptor = Assets.OpenFd(filename);
player.Reset();
player.SetDataSource(fileDescriptor.FileDescriptor);
player.Prepare();
player.Start();
}
生のフォルダ
またものの、あなたが与えられたの自動生成id
を指していることを必要とするraw
フォルダを使用することができますResource
。resource
はyouraudiofile
がraw
フォルダ内の音声FIEの名前である(Resource.raw.youraudiofile
によってアクセスすることができるraw
フォルダ内のオーディオファイルを指す
protected MediaPlayer player;
public void StartPlayer(int resource)
{
if (player == null)
player = MediaPlayer.Create(this, resource);
player.Reset();
player.Prepare();
player.Start();
}
:これはMediaPlayer
の静的Create
方法を使用して行われ)。
raw
フォルダーをthe Xamarin documentationに追加する方法について詳しく読むことができます。
パラメータとして 'string'を使用する必要がありますか?あなたの解決策はファイルの名前を使用して動作する可能性がありますか? – Demitrian