diff --git a/assets/gap.js b/assets/gap.js index 778209a9..7380b106 100644 --- a/assets/gap.js +++ b/assets/gap.js @@ -315,7 +315,7 @@ var Device = { return Device.storage.result; }, testExistence: function(file){ - Device.storage.result = window.DroidGap.testDirOrFileExists(file); + Device.storage.result = window.DroidGap.testFileExists(file); return Device.storage.result; }, delFile: function(file){ @@ -329,7 +329,7 @@ var Device = { createDir: function(file){ Device.storage.result = window.DroidGap.createDirectory(file); return Device.storage.result; - } + } }, diff --git a/assets/index.html b/assets/index.html index 1e35cb50..7ad8f82d 100644 --- a/assets/index.html +++ b/assets/index.html @@ -222,7 +222,6 @@ addLoadEvent(initGap);
-

Change Location

@@ -236,13 +235,10 @@ addLoadEvent(initGap); -
-
-

Read Location

@@ -254,11 +250,9 @@ addLoadEvent(initGap);
-
-

Change Intervals

@@ -272,13 +266,10 @@ addLoadEvent(initGap); -
-
-

Accelerometer

@@ -339,6 +330,7 @@ addLoadEvent(initGap);
+

Storage Management

@@ -401,8 +393,8 @@ addLoadEvent(initGap);
+
-
@@ -423,8 +415,7 @@ addLoadEvent(initGap);
-
- +
diff --git a/src/com/nitobi/phonegap/AudioHandler.java b/src/com/nitobi/phonegap/AudioHandler.java index 7a2934bf..5289236c 100644 --- a/src/com/nitobi/phonegap/AudioHandler.java +++ b/src/com/nitobi/phonegap/AudioHandler.java @@ -2,11 +2,16 @@ package com.nitobi.phonegap; import java.io.File; +import android.media.AudioManager; import android.media.MediaPlayer; +import android.media.MediaPlayer.OnErrorListener; import android.media.MediaRecorder; +import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; +import android.media.MediaPlayer.OnPreparedListener; +import android.util.Log; -public class AudioHandler implements OnCompletionListener { +public class AudioHandler implements OnCompletionListener, OnPreparedListener, OnErrorListener { private MediaRecorder recorder; private boolean isRecording = false; MediaPlayer mPlayer; @@ -33,11 +38,9 @@ public class AudioHandler implements OnCompletionListener { } private void moveFile(String file) { - /* this is just a hck that I will remove later */ + /* this is a hack to save the file as the specified name */ File f = new File (this.recording); f.renameTo(new File("/sdcard" + file)); - System.out.println(this.recording); - System.out.println(file); } public void stopRecording(){ @@ -57,14 +60,25 @@ public class AudioHandler implements OnCompletionListener { try { mPlayer = new MediaPlayer(); isPlaying=true; - mPlayer.setDataSource("/sdcard/" + file); - mPlayer.prepare(); - mPlayer.setOnCompletionListener(this); - mPlayer.start(); + Log.d("Audio startPlaying", "audio: " + file); + if (isStreaming(file)) + { + Log.d("AudioStartPlaying", "Streaming"); + // Streaming prepare async + mPlayer.setDataSource(file); + mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mPlayer.prepareAsync(); + } else { + Log.d("AudioStartPlaying", "File"); + // Not streaming prepare synchronous, abstract base directory + mPlayer.setDataSource("/sdcard/" + file); + mPlayer.prepare(); + } + mPlayer.setOnPreparedListener(this); } catch (Exception e) { e.printStackTrace(); } } } - + public void stopPlaying() { if (isPlaying) { mPlayer.stop(); @@ -73,6 +87,7 @@ public class AudioHandler implements OnCompletionListener { } } + @Override public void onCompletion(MediaPlayer mPlayer) { mPlayer.stop(); mPlayer.release(); @@ -86,17 +101,57 @@ public class AudioHandler implements OnCompletionListener { } else { return(-1); } } + private boolean isStreaming(String file) + { + if (file.contains("http://")) { + return true; + } else { + return false; + } + } + public long getDuration(String file) { long duration = -2; - if (isPlaying==false) { + if (!isPlaying & !isStreaming(file)) { try { mPlayer = new MediaPlayer(); mPlayer.setDataSource("/sdcard/" + file); mPlayer.prepare(); duration = mPlayer.getDuration(); mPlayer.release(); - } catch (Exception e) { e.printStackTrace(); return(-1); } - return duration; - } else { return -1; } + } catch (Exception e) { e.printStackTrace(); return(-3); } + } else + if (isPlaying & !isStreaming(file)) { + duration = mPlayer.getDuration(); + } else + if (isPlaying & isStreaming(file)) { + try { + duration = mPlayer.getDuration(); + } catch (Exception e) { e.printStackTrace(); return(-4); } + }else { return -1; } + return duration; + } + + @Override + public void onPrepared(MediaPlayer mPlayer) { + if (isPlaying) { + mPlayer.setOnCompletionListener(this); + mPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() + { + @Override + public void onBufferingUpdate(MediaPlayer mPlayer, int percent) + { + /* TODO: call back, e.g. update outer progress bar */ + Log.d("AudioOnBufferingUpdate", "percent: " + percent); + } + }); + mPlayer.start(); + } + } + + @Override + public boolean onError(MediaPlayer mPlayer, int arg1, int arg2) { + Log.e("AUDIO onError", "error " + arg1 + " " + arg2); + return false; } } diff --git a/src/com/nitobi/phonegap/DirectoryManager.java b/src/com/nitobi/phonegap/DirectoryManager.java index d3e0e96d..47817b68 100644 --- a/src/com/nitobi/phonegap/DirectoryManager.java +++ b/src/com/nitobi/phonegap/DirectoryManager.java @@ -6,7 +6,7 @@ import android.os.Environment; public class DirectoryManager { - protected boolean isDirtoryOrFileExists (String name){ + protected boolean testFileExists (String name){ boolean status; if ((testSaveLocationExists())&&(!name.equals(""))){ File path = Environment.getExternalStorageDirectory(); @@ -41,7 +41,7 @@ public class DirectoryManager { return status; } - protected boolean deleteDir (String fileName){ + protected boolean deleteDirectory(String fileName){ boolean status; SecurityManager checker = new SecurityManager(); @@ -75,7 +75,7 @@ public class DirectoryManager { return status; } - protected boolean deleteFile (String fileName){ + protected boolean deleteFile(String fileName){ boolean status; SecurityManager checker = new SecurityManager(); diff --git a/src/com/nitobi/phonegap/PhoneGap.java b/src/com/nitobi/phonegap/PhoneGap.java index d5e72fba..b14a9868 100644 --- a/src/com/nitobi/phonegap/PhoneGap.java +++ b/src/com/nitobi/phonegap/PhoneGap.java @@ -248,38 +248,42 @@ public class PhoneGap{ http.get(url, file); } + /* + * TODO: FIX! These should not be returning arbitrary Strings! + */ public String testSaveLocationExists(){ if (fileManager.testSaveLocationExists()) return "SD Card available"; else return "SD Card unavailable"; } - public String testDirOrFileExists(String file){ - if (fileManager.isDirtoryOrFileExists(file)) + public String testFileExists(String file){ + if (fileManager.testFileExists(file)) return "File exists"; else return "No this file"; } + public String deleteDirectory (String dir){ - if (fileManager.deleteDir(dir)) + if (fileManager.deleteDirectory(dir)) return "Completed"; else return "Not completed"; } + public String deleteFile (String file){ if (fileManager.deleteFile(file)) return "Completed"; else return "Not completed"; } - public String createDirectory(String dir){ - if (fileManager.createDirectory(dir)) + + public String createDirectory(String dir){ + if (fileManager.createDirectory(dir)) return "Completed"; else return "Not completed"; } - - /** * AUDIO @@ -326,21 +330,25 @@ public class PhoneGap{ (TelephonyManager)mCtx.getSystemService(Context.TELEPHONY_SERVICE); return(tm.getLine1Number()); } + public String getVoiceMailNumber() { TelephonyManager tm = (TelephonyManager)mCtx.getSystemService(Context.TELEPHONY_SERVICE); return(tm.getVoiceMailNumber()); } + public String getNetworkOperatorName(){ TelephonyManager tm = (TelephonyManager)mCtx.getSystemService(Context.TELEPHONY_SERVICE); return(tm.getNetworkOperatorName()); } + public String getSimCountryIso(){ TelephonyManager tm = (TelephonyManager)mCtx.getSystemService(Context.TELEPHONY_SERVICE); return(tm.getSimCountryIso()); } + public String getTimeZoneID() { TimeZone tz = TimeZone.getDefault(); return(tz.getID());