summaryrefslogtreecommitdiffstats
path: root/platform/android/java/src/org/godotengine/godot/GodotIO.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/java/src/org/godotengine/godot/GodotIO.java')
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotIO.java273
1 files changed, 120 insertions, 153 deletions
diff --git a/platform/android/java/src/org/godotengine/godot/GodotIO.java b/platform/android/java/src/org/godotengine/godot/GodotIO.java
index 989fd2b609..12a2467a29 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotIO.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotIO.java
@@ -56,7 +56,6 @@ import org.godotengine.godot.input.*;
public class GodotIO {
-
AssetManager am;
Godot activity;
GodotEditText edit;
@@ -64,35 +63,32 @@ public class GodotIO {
Context applicationContext;
MediaPlayer mediaPlayer;
- final int SCREEN_LANDSCAPE=0;
- final int SCREEN_PORTRAIT=1;
- final int SCREEN_REVERSE_LANDSCAPE=2;
- final int SCREEN_REVERSE_PORTRAIT=3;
- final int SCREEN_SENSOR_LANDSCAPE=4;
- final int SCREEN_SENSOR_PORTRAIT=5;
- final int SCREEN_SENSOR=6;
+ final int SCREEN_LANDSCAPE = 0;
+ final int SCREEN_PORTRAIT = 1;
+ final int SCREEN_REVERSE_LANDSCAPE = 2;
+ final int SCREEN_REVERSE_PORTRAIT = 3;
+ final int SCREEN_SENSOR_LANDSCAPE = 4;
+ final int SCREEN_SENSOR_PORTRAIT = 5;
+ final int SCREEN_SENSOR = 6;
/////////////////////////
/// FILES
/////////////////////////
- public int last_file_id=1;
+ public int last_file_id = 1;
class AssetData {
-
- public boolean eof=false;
+ public boolean eof = false;
public String path;
public InputStream is;
public int len;
public int pos;
}
+ HashMap<Integer, AssetData> streams;
- HashMap<Integer,AssetData> streams;
-
-
- public int file_open(String path,boolean write) {
+ public int file_open(String path, boolean write) {
//System.out.printf("file_open: Attempt to Open %s\n",path);
@@ -100,7 +96,6 @@ public class GodotIO {
if (write)
return -1;
-
AssetData ad = new AssetData();
try {
@@ -113,76 +108,73 @@ public class GodotIO {
}
try {
- ad.len=ad.is.available();
+ ad.len = ad.is.available();
} catch (Exception e) {
- System.out.printf("Exception availabling on file_open: %s\n",path);
+ System.out.printf("Exception availabling on file_open: %s\n", path);
return -1;
}
- ad.path=path;
- ad.pos=0;
+ ad.path = path;
+ ad.pos = 0;
++last_file_id;
- streams.put(last_file_id,ad);
+ streams.put(last_file_id, ad);
return last_file_id;
}
public int file_get_size(int id) {
if (!streams.containsKey(id)) {
- System.out.printf("file_get_size: Invalid file id: %d\n",id);
+ System.out.printf("file_get_size: Invalid file id: %d\n", id);
return -1;
}
return streams.get(id).len;
-
}
- public void file_seek(int id,int bytes) {
+ public void file_seek(int id, int bytes) {
if (!streams.containsKey(id)) {
- System.out.printf("file_get_size: Invalid file id: %d\n",id);
+ System.out.printf("file_get_size: Invalid file id: %d\n", id);
return;
}
//seek sucks
AssetData ad = streams.get(id);
- if (bytes>ad.len)
- bytes=ad.len;
- if (bytes<0)
- bytes=0;
+ if (bytes > ad.len)
+ bytes = ad.len;
+ if (bytes < 0)
+ bytes = 0;
try {
- if (bytes > (int)ad.pos) {
- int todo=bytes-(int)ad.pos;
- while(todo>0) {
- todo-=ad.is.skip(todo);
- }
- ad.pos=bytes;
- } else if (bytes<(int)ad.pos) {
+ if (bytes > (int)ad.pos) {
+ int todo = bytes - (int)ad.pos;
+ while (todo > 0) {
+ todo -= ad.is.skip(todo);
+ }
+ ad.pos = bytes;
+ } else if (bytes < (int)ad.pos) {
- ad.is=am.open(ad.path);
+ ad.is = am.open(ad.path);
- ad.pos=bytes;
- int todo=bytes;
- while(todo>0) {
- todo-=ad.is.skip(todo);
+ ad.pos = bytes;
+ int todo = bytes;
+ while (todo > 0) {
+ todo -= ad.is.skip(todo);
+ }
}
- }
- ad.eof=false;
+ ad.eof = false;
} catch (IOException e) {
- System.out.printf("Exception on file_seek: %s\n",e);
+ System.out.printf("Exception on file_seek: %s\n", e);
return;
}
-
-
}
public int file_tell(int id) {
if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't tell eof for invalid file id: %d\n",id);
+ System.out.printf("file_read: Can't tell eof for invalid file id: %d\n", id);
return 0;
}
@@ -192,7 +184,7 @@ public class GodotIO {
public boolean file_eof(int id) {
if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't check eof for invalid file id: %d\n",id);
+ System.out.printf("file_read: Can't check eof for invalid file id: %d\n", id);
return false;
}
@@ -203,73 +195,65 @@ public class GodotIO {
public byte[] file_read(int id, int bytes) {
if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't read invalid file id: %d\n",id);
+ System.out.printf("file_read: Can't read invalid file id: %d\n", id);
return new byte[0];
}
-
AssetData ad = streams.get(id);
if (ad.pos + bytes > ad.len) {
- bytes=ad.len-ad.pos;
- ad.eof=true;
+ bytes = ad.len - ad.pos;
+ ad.eof = true;
}
-
- if (bytes==0) {
+ if (bytes == 0) {
return new byte[0];
}
-
-
- byte[] buf1=new byte[bytes];
- int r=0;
+ byte[] buf1 = new byte[bytes];
+ int r = 0;
try {
r = ad.is.read(buf1);
} catch (IOException e) {
- System.out.printf("Exception on file_read: %s\n",e);
+ System.out.printf("Exception on file_read: %s\n", e);
return new byte[bytes];
}
- if (r==0) {
+ if (r == 0) {
return new byte[0];
}
- ad.pos+=r;
+ ad.pos += r;
- if (r<bytes) {
+ if (r < bytes) {
- byte[] buf2=new byte[r];
- for(int i=0;i<r;i++)
- buf2[i]=buf1[i];
+ byte[] buf2 = new byte[r];
+ for (int i = 0; i < r; i++)
+ buf2[i] = buf1[i];
return buf2;
} else {
return buf1;
}
-
}
public void file_close(int id) {
if (!streams.containsKey(id)) {
- System.out.printf("file_close: Can't close invalid file id: %d\n",id);
+ System.out.printf("file_close: Can't close invalid file id: %d\n", id);
return;
}
streams.remove(id);
-
}
-
/////////////////////////
/// DIRECTORIES
/////////////////////////
-
class AssetDir {
public String[] files;
@@ -277,49 +261,48 @@ public class GodotIO {
public String path;
}
- public int last_dir_id=1;
+ public int last_dir_id = 1;
- HashMap<Integer,AssetDir> dirs;
+ HashMap<Integer, AssetDir> dirs;
public int dir_open(String path) {
AssetDir ad = new AssetDir();
- ad.current=0;
- ad.path=path;
+ ad.current = 0;
+ ad.path = path;
try {
ad.files = am.list(path);
// no way to find path is directory or file exactly.
// but if ad.files.length==0, then it's an empty directory or file.
- if (ad.files.length==0) {
+ if (ad.files.length == 0) {
return -1;
}
} catch (IOException e) {
- System.out.printf("Exception on dir_open: %s\n",e);
+ System.out.printf("Exception on dir_open: %s\n", e);
return -1;
}
//System.out.printf("Opened dir: %s\n",path);
++last_dir_id;
- dirs.put(last_dir_id,ad);
+ dirs.put(last_dir_id, ad);
return last_dir_id;
-
}
public boolean dir_is_dir(int id) {
if (!dirs.containsKey(id)) {
- System.out.printf("dir_next: invalid dir id: %d\n",id);
+ System.out.printf("dir_next: invalid dir id: %d\n", id);
return false;
}
AssetDir ad = dirs.get(id);
//System.out.printf("go next: %d,%d\n",ad.current,ad.files.length);
int idx = ad.current;
- if (idx>0)
+ if (idx > 0)
idx--;
- if (idx>=ad.files.length)
+ if (idx >= ad.files.length)
return false;
String fname = ad.files[idx];
@@ -327,7 +310,7 @@ public class GodotIO {
if (ad.path.equals(""))
am.open(fname);
else
- am.open(ad.path+"/"+fname);
+ am.open(ad.path + "/" + fname);
return false;
} catch (Exception e) {
return true;
@@ -337,46 +320,41 @@ public class GodotIO {
public String dir_next(int id) {
if (!dirs.containsKey(id)) {
- System.out.printf("dir_next: invalid dir id: %d\n",id);
+ System.out.printf("dir_next: invalid dir id: %d\n", id);
return "";
}
AssetDir ad = dirs.get(id);
//System.out.printf("go next: %d,%d\n",ad.current,ad.files.length);
- if (ad.current>=ad.files.length) {
+ if (ad.current >= ad.files.length) {
ad.current++;
return "";
}
String r = ad.files[ad.current];
ad.current++;
return r;
-
}
public void dir_close(int id) {
if (!dirs.containsKey(id)) {
- System.out.printf("dir_close: invalid dir id: %d\n",id);
+ System.out.printf("dir_close: invalid dir id: %d\n", id);
return;
}
dirs.remove(id);
}
-
-
GodotIO(Godot p_activity) {
- am=p_activity.getAssets();
- activity=p_activity;
- streams=new HashMap<Integer,AssetData>();
- dirs=new HashMap<Integer,AssetDir>();
+ am = p_activity.getAssets();
+ activity = p_activity;
+ streams = new HashMap<Integer, AssetData>();
+ dirs = new HashMap<Integer, AssetDir>();
applicationContext = activity.getApplicationContext();
-
}
-
/////////////////////////
// AUDIO
/////////////////////////
@@ -400,7 +378,7 @@ public class GodotIO {
desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize);
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate,
- channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
+ channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
audioStartThread();
@@ -412,10 +390,10 @@ public class GodotIO {
public void audioStartThread() {
mAudioThread = new Thread(new Runnable() {
- public void run() {
- mAudioTrack.play();
- GodotLib.audio();
- }
+ public void run() {
+ mAudioTrack.play();
+ GodotLib.audio();
+ }
});
// I'd take REALTIME if I could get it!
@@ -424,15 +402,15 @@ public class GodotIO {
}
public void audioWriteShortBuffer(short[] buffer) {
- for (int i = 0; i < buffer.length; ) {
+ for (int i = 0; i < buffer.length;) {
int result = mAudioTrack.write(buffer, i, buffer.length - i);
if (result > 0) {
i += result;
} else if (result == 0) {
try {
- Thread.sleep(1);
- } catch(InterruptedException e) {
- // Nom nom
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ // Nom nom
}
} else {
Log.w("Godot", "Godot audio: error return from write(short)");
@@ -441,18 +419,16 @@ public class GodotIO {
}
}
-
-
public void audioQuit() {
if (mAudioThread != null) {
try {
mAudioThread.join();
- } catch(Exception e) {
+ } catch (Exception e) {
Log.v("Godot", "Problem stopping audio thread: " + e);
}
mAudioThread = null;
- //Log.v("Godot", "Finished waiting for audio thread");
+ //Log.v("Godot", "Finished waiting for audio thread");
}
if (mAudioTrack != null) {
@@ -473,20 +449,18 @@ public class GodotIO {
// MISCELLANEOUS OS IO
/////////////////////////
-
-
public int openURI(String p_uri) {
try {
Log.v("MyApp", "TRYING TO OPEN URI: " + p_uri);
String path = p_uri;
- String type="";
+ String type = "";
if (path.startsWith("/")) {
//absolute path to filesystem, prepend file://
- path="file://"+path;
+ path = "file://" + path;
if (p_uri.endsWith(".png") || p_uri.endsWith(".jpg") || p_uri.endsWith(".gif") || p_uri.endsWith(".webp")) {
- type="image/*";
+ type = "image/*";
}
}
@@ -531,7 +505,7 @@ public class GodotIO {
}
public void showKeyboard(String p_existing_text) {
- if(edit != null)
+ if (edit != null)
edit.showKeyboard(p_existing_text);
//InputMethodManager inputMgr = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
@@ -539,21 +513,21 @@ public class GodotIO {
};
public void hideKeyboard() {
- if(edit != null)
+ if (edit != null)
edit.hideKeyboard();
- InputMethodManager inputMgr = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
- View v = activity.getCurrentFocus();
- if (v != null) {
- inputMgr.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
- } else {
- inputMgr.hideSoftInputFromWindow(new View(activity).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
- }
+ InputMethodManager inputMgr = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
+ View v = activity.getCurrentFocus();
+ if (v != null) {
+ inputMgr.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+ } else {
+ inputMgr.hideSoftInputFromWindow(new View(activity).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+ }
};
public void setScreenOrientation(int p_orientation) {
- switch(p_orientation) {
+ switch (p_orientation) {
case SCREEN_LANDSCAPE: {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
@@ -576,16 +550,14 @@ public class GodotIO {
case SCREEN_SENSOR: {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
} break;
-
}
};
-
+
public void setEdit(GodotEditText _edit) {
edit = _edit;
}
- public void playVideo(String p_path)
- {
+ public void playVideo(String p_path) {
Uri filePath = Uri.parse(p_path);
mediaPlayer = new MediaPlayer();
@@ -594,11 +566,9 @@ public class GodotIO {
mediaPlayer.setDataSource(applicationContext, filePath);
mediaPlayer.prepare();
mediaPlayer.start();
+ } catch (IOException e) {
+ System.out.println("IOError while playing video");
}
- catch(IOException e)
- {
- System.out.println("IOError while playing video");
- }
}
public boolean isVideoPlaying() {
@@ -621,49 +591,47 @@ public class GodotIO {
}
}
-
- public static final int SYSTEM_DIR_DESKTOP=0;
- public static final int SYSTEM_DIR_DCIM=1;
- public static final int SYSTEM_DIR_DOCUMENTS=2;
- public static final int SYSTEM_DIR_DOWNLOADS=3;
- public static final int SYSTEM_DIR_MOVIES=4;
- public static final int SYSTEM_DIR_MUSIC=5;
- public static final int SYSTEM_DIR_PICTURES=6;
- public static final int SYSTEM_DIR_RINGTONES=7;
-
+ public static final int SYSTEM_DIR_DESKTOP = 0;
+ public static final int SYSTEM_DIR_DCIM = 1;
+ public static final int SYSTEM_DIR_DOCUMENTS = 2;
+ public static final int SYSTEM_DIR_DOWNLOADS = 3;
+ public static final int SYSTEM_DIR_MOVIES = 4;
+ public static final int SYSTEM_DIR_MUSIC = 5;
+ public static final int SYSTEM_DIR_PICTURES = 6;
+ public static final int SYSTEM_DIR_RINGTONES = 7;
public String getSystemDir(int idx) {
- String what="";
- switch(idx) {
+ String what = "";
+ switch (idx) {
case SYSTEM_DIR_DESKTOP: {
//what=Environment.DIRECTORY_DOCUMENTS;
- what=Environment.DIRECTORY_DOWNLOADS;
+ what = Environment.DIRECTORY_DOWNLOADS;
} break;
case SYSTEM_DIR_DCIM: {
- what=Environment.DIRECTORY_DCIM;
+ what = Environment.DIRECTORY_DCIM;
} break;
case SYSTEM_DIR_DOCUMENTS: {
- what=Environment.DIRECTORY_DOWNLOADS;
+ what = Environment.DIRECTORY_DOWNLOADS;
//what=Environment.DIRECTORY_DOCUMENTS;
} break;
case SYSTEM_DIR_DOWNLOADS: {
- what=Environment.DIRECTORY_DOWNLOADS;
+ what = Environment.DIRECTORY_DOWNLOADS;
} break;
case SYSTEM_DIR_MOVIES: {
- what=Environment.DIRECTORY_MOVIES;
+ what = Environment.DIRECTORY_MOVIES;
} break;
case SYSTEM_DIR_MUSIC: {
- what=Environment.DIRECTORY_MUSIC;
+ what = Environment.DIRECTORY_MUSIC;
} break;
case SYSTEM_DIR_PICTURES: {
- what=Environment.DIRECTORY_PICTURES;
+ what = Environment.DIRECTORY_PICTURES;
} break;
case SYSTEM_DIR_RINGTONES: {
- what=Environment.DIRECTORY_RINGTONES;
+ what = Environment.DIRECTORY_RINGTONES;
} break;
}
@@ -676,10 +644,9 @@ public class GodotIO {
protected static final String PREFS_FILE = "device_id.xml";
protected static final String PREFS_DEVICE_ID = "device_id";
- public static String unique_id="";
+ public static String unique_id = "";
public String getUniqueID() {
- return unique_id;
+ return unique_id;
}
-
}