diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a25a88c0..2d75fb20 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -14,6 +14,7 @@ + diff --git a/assets/gap.js b/assets/gap.js index 7380b106..3b481fb9 100644 --- a/assets/gap.js +++ b/assets/gap.js @@ -351,6 +351,12 @@ var Device = { }, getDuration: function(file) { return window.DroidGap.getDurationAudio(file); + }, + setAudioOutputDevice: function(output){ + window.DroidGap.setAudioOutputDevice(output); + }, + getAudioOutputDevice: function (){ + return window.DroidGap.getAudioOutputDevice(); } }, information: { diff --git a/assets/index.html b/assets/index.html index 7ad8f82d..1f16d66a 100644 --- a/assets/index.html +++ b/assets/index.html @@ -146,7 +146,17 @@ audio = function(func) } else if (func == 'getDuration') { $('posdur').value = Device.audio.getDuration($('audioFile').value); - } + }else + if (func == 'setEarpiece') { + Device.audio.setAudioOutputDevice(func); + } else + if (func == 'setSpeaker') { + Device.audio.setAudioOutputDevice(func); + }else + if (func == 'getAudioOutputDevice') { + $('audoutput').value = Device.audio.getAudioOutputDevice(); + } + } phInformation = function(){ @@ -392,6 +402,18 @@ addLoadEvent(initGap); getPosition +
+ +
+
+
+ Audio Output + +
+
diff --git a/src/com/nitobi/phonegap/AudioHandler.java b/src/com/nitobi/phonegap/AudioHandler.java index 5289236c..ae89ef72 100644 --- a/src/com/nitobi/phonegap/AudioHandler.java +++ b/src/com/nitobi/phonegap/AudioHandler.java @@ -2,6 +2,7 @@ package com.nitobi.phonegap; import java.io.File; +import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnErrorListener; @@ -18,9 +19,11 @@ public class AudioHandler implements OnCompletionListener, OnPreparedListener, O private boolean isPlaying = false; private String recording; private String saveFile; + private Context mCtx; - public AudioHandler(String file) { + public AudioHandler(String file, Context ctx) { this.recording = file; + this.mCtx = ctx; } public void startRecording(String file){ @@ -87,7 +90,6 @@ public class AudioHandler implements OnCompletionListener, OnPreparedListener, O } } - @Override public void onCompletion(MediaPlayer mPlayer) { mPlayer.stop(); mPlayer.release(); @@ -154,4 +156,25 @@ public class AudioHandler implements OnCompletionListener, OnPreparedListener, O Log.e("AUDIO onError", "error " + arg1 + " " + arg2); return false; } + + protected void setAudioOutputDevice(String output){ + System.out.println ("Change audio setting to be "+output); + AudioManager audiMgr = (AudioManager) mCtx.getSystemService(Context.AUDIO_SERVICE); + if (output.contains("Speaker")) + audiMgr.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL); + else if (output.contains("Earpiece")){ + audiMgr.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL); + }else + System.out.println("input error"); + + } + protected int getAudioOutputDevice(){ + AudioManager audiMgr = (AudioManager) mCtx.getSystemService(Context.AUDIO_SERVICE); + if (audiMgr.getRouting(AudioManager.MODE_NORMAL) == AudioManager.ROUTE_EARPIECE) + return 1; + else if (audiMgr.getRouting(AudioManager.MODE_NORMAL) == AudioManager.ROUTE_SPEAKER) + return 2; + else + return -1; + } } diff --git a/src/com/nitobi/phonegap/PhoneGap.java b/src/com/nitobi/phonegap/PhoneGap.java index b14a9868..79d1994d 100644 --- a/src/com/nitobi/phonegap/PhoneGap.java +++ b/src/com/nitobi/phonegap/PhoneGap.java @@ -51,6 +51,7 @@ public class PhoneGap{ protected LocationProvider provider; SmsListener mSmsListener; DirectoryManager fileManager; + AudioHandler audio; public PhoneGap(Context ctx, Handler handler, WebView appView) { this.mCtx = ctx; @@ -60,6 +61,7 @@ public class PhoneGap{ mNetwork = new NetworkListener(ctx); mSmsListener = new SmsListener(ctx,mAppView); fileManager = new DirectoryManager(); + audio = new AudioHandler("/sdcard/tmprecording.mp3", ctx); } public void updateAccel(){ @@ -248,48 +250,96 @@ public class PhoneGap{ http.get(url, file); } +<<<<<<< HEAD:android/src/com/nitobi/phonegap/PhoneGap.java /* * TODO: FIX! These should not be returning arbitrary Strings! */ public String testSaveLocationExists(){ +======= + /** + * Check if SD card is ready and already mounted + * TODO: JavaScript Call backs for success and error handling + */ + public int testSaveLocationExists(){ +>>>>>>> 6959002f1187829f33e279633e0446cc750ab6d3:android/src/com/nitobi/phonegap/PhoneGap.java if (fileManager.testSaveLocationExists()) - return "SD Card available"; + return 0; else - return "SD Card unavailable"; + return 1; } +<<<<<<< HEAD:android/src/com/nitobi/phonegap/PhoneGap.java public String testFileExists(String file){ if (fileManager.testFileExists(file)) return "File exists"; +======= + + /** + * Check if a specific directory of file exists + * TODO: JavaScript Call backs for success and error handling + */ + public int testDirOrFileExists(String file){ + if (fileManager.isDirtoryOrFileExists(file)) + return 0; +>>>>>>> 6959002f1187829f33e279633e0446cc750ab6d3:android/src/com/nitobi/phonegap/PhoneGap.java else - return "No this file"; + return 1; } +<<<<<<< HEAD:android/src/com/nitobi/phonegap/PhoneGap.java public String deleteDirectory (String dir){ if (fileManager.deleteDirectory(dir)) return "Completed"; +======= + /** + * Delete a specific directory. + * Everyting in side the directory would be gone. + * TODO: JavaScript Call backs for success and error handling + */ + public int deleteDirectory (String dir){ + if (fileManager.deleteDir(dir)) + return 0; +>>>>>>> 6959002f1187829f33e279633e0446cc750ab6d3:android/src/com/nitobi/phonegap/PhoneGap.java else - return "Not completed"; + return 1; } +<<<<<<< HEAD:android/src/com/nitobi/phonegap/PhoneGap.java public String deleteFile (String file){ +======= + /** + * Delete a specific file. + * TODO: JavaScript Call backs for success and error handling + */ + public int deleteFile (String file){ +>>>>>>> 6959002f1187829f33e279633e0446cc750ab6d3:android/src/com/nitobi/phonegap/PhoneGap.java if (fileManager.deleteFile(file)) - return "Completed"; + return 0; else - return "Not completed"; + return 1; } +<<<<<<< HEAD:android/src/com/nitobi/phonegap/PhoneGap.java public String createDirectory(String dir){ if (fileManager.createDirectory(dir)) return "Completed"; +======= + /** + * Create a new directory. + * TODO: JavaScript Call backs for success and error handling + */ + public int createDirectory(String dir){ + if (fileManager.createDirectory(dir)) + return 0; +>>>>>>> 6959002f1187829f33e279633e0446cc750ab6d3:android/src/com/nitobi/phonegap/PhoneGap.java else - return "Not completed"; + return 1; } /** * AUDIO * TODO: Basic functions done but needs more work on error handling and call backs, remove record hack */ - AudioHandler audio = new AudioHandler("/sdcard/tmprecording.mp3"); + public void startRecordingAudio(String file) { /* for this to work the recording needs to be specified in the constructor, @@ -325,6 +375,13 @@ public class PhoneGap{ return(audio.getDuration(file)); } + public void setAudioOutputDevice(String output){ + audio.setAudioOutputDevice(output); + } + public int getAudioOutputDevice(){ + return audio.getAudioOutputDevice(); + } + public String getLine1Number() { TelephonyManager tm = (TelephonyManager)mCtx.getSystemService(Context.TELEPHONY_SERVICE);