2012-04-21 8 views
1

非アクティビティクラスでアンドロイドMediaPlayerを使用する際に問題が発生します。常にコンテキストエラーです。ここで盗聴行は次のとおりです。通常のクラスでmediaplayerを使用

MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot); 

今、私は私がサービスにthisを使用カント知っているが、私が試した他のすべてのものは、バグを与え続けました。

提案がありますか?

+0

まあ、それは 'Context'を拡張として技術的にあなたが' Service'で 'this'を使用することができます。あなたは 'this'の代わりに' getApplicationContext() 'を試しましたか? – Squonk

+0

私のクラスはすでにスレッドを拡張しているので、これは不可能です。私はまた、アクティビティのオブジェクトを介してgetApplicationContextを使用しようとしましたが、失敗しました。 – dorbt12

+0

Applicationのサブクラスを作成し、それをMyApplicationなどと呼び、Manifestに配置します。 'MyApplication.getApplicatonContext()'を呼び出すことでコンテキストを取得することができます – lenik

答えて

0

試してみてください。

try { 
    MediaPlayer mp = new MediaPlayer(); 

    AssetFileDescriptor afd = getResources().openRawResourceFd(1); 
    if (afd != null) { 
     mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     afd.close(); 
     mp.prepare(); 
     mp.start(); 
    } 
} catch (IllegalArgumentException e) { 
} catch (IllegalStateException e) { 
} catch (IOException e) { 
}