2013-08-11 2 views
0

Привет я пытаюсь играть alarmaound как этотPlay Alarm Sound на Galaxy S1

File f = Helper.getFileFromAsset(fart, context); 
final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
Ringtone ringtone = RingtoneManager.getRingtone(context, Uri.fromFile(f)); 
if (ringtone != null) { 
    ringtone.setStreamType(AudioManager.STREAM_ALARM); 
    ringtone.play(); 
} 

на моей галактики s4 все нормально, но й s1 дает мне в LogCat

08-11 17:27:31.958: W/PowerManagerService(128): Timer 0x3->0x1|0x1 
08-11 17:27:32.813: E/RingtoneManager(2866): getRingtone : file:///data/data/xxx.package.xxx/cache/THEONE.wav, streamType : -1 
08-11 17:27:32.876: E/PlayerDriver(83): PlayerDriver::it is a not Protected file 
08-11 17:27:32.884: E/OsclDirectFileIO(83): [LargeFileSupport] OsclDirectFileIO::OpenFileOrSharedFd Error = -1 
08-11 17:27:32.884: W/MediaPlayer(2866): info/warning (1, 26) 
08-11 17:27:32.884: E/PlayerDriver(83): Command PLAYER_SET_DATA_SOURCE completed with an error or info -4 
08-11 17:27:32.884: E/MediaPlayer(2866): error (-4, -4) 
08-11 17:27:32.884: E/RingtoneManager(2866): Failed to open ringtone file:///data/data/xxx.package.xxx/cache/THEONE.wav 
08-11 17:27:32.884: W/PlayerDriver(83): PVMFInfoErrorHandlingComplete 

Функция Helper.getFileFromAsset выглядит, что

public static File getFileFromAsset(String name, Context ctx) { 
    File f = new File(ctx.getCacheDir() + "/" + new File(name).getName()); 
    if (!f.exists()) 
     try { 
      InputStream is = ctx.getAssets().open(name); 
      int size = is.available(); 
      byte[] buffer = new byte[size]; 
      is.read(buffer); 
      is.close(); 
      FileOutputStream fos = new FileOutputStream(f); 
      fos.write(buffer); 
      fos.close(); 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
    return f; 
} 

я думаю

PlayerDriver::it is a not Protected file 

проблема, любые идеи?

ответ

0

Для воспроизведения звукового сигнала и может использовать это:

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
r.play(); 

и не забудьте упомянуть Ringtone г, как этот

public class MainActivity extends Activity{ 
Ringtone r; 
+0

, но мне нужно, чтобы воспроизвести определенный файл из моей папки активов , возможно ли это с помощью этого кода? – wutzebaer

+0

хорошо, чтобы сделать это ... лучше сделать новую папку под названием raw внутри папки ресурсов и скопировать туда звуковой клип. затем добавьте следующее: ourSong = MediaPlayer.create (Incoming.this, R.raw.abcd); ourSong.start(); где abcd - звуковой файл ur, а Incoming - ur java class и точно так же, как мы определили Ringtone r; u необходимо определить MediaPlayer ourSong; –