[Q] Need help with my next update! - Java for Android App Development

Right before i start, i have looked absolutely everywhere for the answer but there's only so much that people talk about so this is my last hope because I've tried and tried but simply can't do it!
Now i understand that to some this may be a very very easy thing to do and although i have learnt a hell of a lot since i started developing, I'm just not a pro (Just yet)
So basically ever since i started my music player, I've had one big problem and that's trying to list music albums and the songs, now, I have code that does work but it simply doesn't go with my apps data source so I'm trying to the code that i done but the code that I done doesn't show the list of songs, becauser it crashes
Here's the code so far:
Code:
public class AlbumsList extends ListActivity{
public ArrayList<HashMap<String,String>> albumsList = new ArrayList<HashMap<String, String>>();
ListView musiclist;
int songAlbum;
int count;
int songPath;
private Cursor cursor;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.albums);
ArrayList<HashMap<String, String>> albumListData = new ArrayList<HashMap<String, String>>();
final AlbumsList plm = new AlbumsList();
// get all songs from sdcard
this.albumsList = plm.getPlayList(this, count);
// looping through playlist
for (int i = 0; i < albumsList.size(); i++) {
// creating new HashMap
HashMap<String, String> album = albumsList.get(i);
// adding HashList to ArrayList
albumListData.add(album);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, albumListData,
android.R.layout.simple_list_item_1, new String[] { "songAlbum", "songTitle", "orderBy", "songPath", "where", "whereVal" }, new int[] {
android.R.id.text1});
setListAdapter(adapter);
}
public ArrayList<HashMap<String, String>> getPlayList(Context c, int position) {
final String[] columns = { BaseColumns._ID,
AlbumColumns.ALBUM };
final Cursor mCursor = c.getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
columns, null, null, null);
String songAlbum = "";
if (mCursor.moveToFirst()) {
do {
mCursor.getString(mCursor.getColumnIndexOrThrow(BaseColumns._ID));
songAlbum = mCursor.getString(mCursor.getColumnIndexOrThrow(AudioColumns.ALBUM));
HashMap<String, String> album = new HashMap<String, String>();
album.put("songAlbum", songAlbum);
albumsList.add(album);
} while (mCursor.moveToNext());
}
return albumsList;
}
@Override
protected void onListItemClick(ListView lv, View v, int position, long id) {
if(cursor.moveToPosition(position)){
cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaColumns.TITLE, MediaColumns.DATA, AudioColumns.ALBUM, BaseColumns._ID }, null, null,
"LOWER(" + MediaColumns.TITLE + ") ASC");
String where = AudioColumns.ALBUM
+ "=?";
String whereVal = cursor.getString(cursor.getColumnIndex(AlbumColumns.ALBUM));
String orderBy = MediaColumns.TITLE;
String songTitle = MediaColumns.TITLE;
String songPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaColumns.DATA));
HashMap<String, String> album = new HashMap<String, String>();
album.put("songTitle", songTitle);
album.put("where", where);
album.put("whereVal", whereVal);
album.put("orderBy", orderBy);
album.put("songPath", songPath);
albumsList.add(album);
}else{
}
}
}
That Code successfully gets all the albums but it won't get the songs from the selected album
Here's the LogCat:
Code:
03-18 18:42:21.579: E/AndroidRuntime(10214): at dalvik.system.NativeStart.main(Native Method)
03-18 18:46:48.223: E/SpannableStringBuilder(12325): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
03-18 18:46:48.223: E/SpannableStringBuilder(12325): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
03-18 18:46:48.894: E/AndroidRuntime(12325): FATAL EXCEPTION: main
03-18 18:46:48.894: E/AndroidRuntime(12325): java.lang.NullPointerException
03-18 18:46:48.894: E/AndroidRuntime(12325): at com.simplistic.simplisticmusicfree.AlbumsList.onListItemClick(AlbumsList.java:93)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.widget.AdapterView.performItemClick(AdapterView.java:301)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.widget.AbsListView.performItemClick(AbsListView.java:1519)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3291)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.widget.AbsListView$1.run(AbsListView.java:4340)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.os.Handler.handleCallback(Handler.java:725)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.os.Handler.dispatchMessage(Handler.java:92)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.os.Looper.loop(Looper.java:137)
03-18 18:46:48.894: E/AndroidRuntime(12325): at android.app.ActivityThread.main(ActivityThread.java:5328)
03-18 18:46:48.894: E/AndroidRuntime(12325): at java.lang.reflect.Method.invokeNative(Native Method)
03-18 18:46:48.894: E/AndroidRuntime(12325): at java.lang.reflect.Method.invoke(Method.java:511)
03-18 18:46:48.894: E/AndroidRuntime(12325): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
03-18 18:46:48.894: E/AndroidRuntime(12325): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
03-18 18:46:48.894: E/AndroidRuntime(12325): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
03-18 18:46:48.894: E/AndroidRuntime(12325): at dalvik.system.NativeStart.main(Native Method)
Also just in case your wondering, this is music player in question: https://play.google.com/store/apps/details?id=com.simplistic.simplisticmusicfree
So yeah please for the love of god, help!!!

Updated the Question!

AmatuerAppDeveloper said:
Updated the Question!
Click to expand...
Click to collapse
Sorry but there seems to be a few simple problems there, and the error tells you what it is. I would suspect that the tutorials you have followed have not done a great job, or that you skipped some quite basic things... maybe learn some Java 101 and android basics. BTW I don't mean to sound condescending, I'm actually an authorised Autodesk instructor and developer and artist/trainer so it's maybe the way I say things, it's often for the total benefit of the individual I'm talking to, and quite blunt sometimes.
Your problem is clear and outlined in that error,
Code:
03-18 18:46:48.894: E/AndroidRuntime(12325): java.lang.NullPointerException
03-18 18:46:48.894: E/AndroidRuntime(12325): at com.simplistic.simplisticmusicfree.AlbumsList.onListItemClick(AlbumsList.java:93)
so on line 93, you are asking an "Object" that is actually "NULL" to execute or reference data or method, I would guess that it is as simple as the
Code:
private Cursor cursor;
You never assign it anything, you just create a null reference there. But then you ask it (Being null at this point) to ".moveToPosition()"
BTW: Still not fully awake and only glimpsed at your post

deanwray said:
Sorry but there seems to be a few simple problems there, and the error tells you what it is. I would suspect that the tutorials you have followed have not done a great job, or that you skipped some quite basic things... maybe learn some Java 101 and android basics. BTW I don't mean to sound condescending, I'm actually an authorised Autodesk instructor and developer and artist/trainer so it's maybe the way I say things, it's often for the total benefit of the individual I'm talking to, and quite blunt sometimes.
Your problem is clear and outlined in that error,
Code:
03-18 18:46:48.894: E/AndroidRuntime(12325): java.lang.NullPointerException
03-18 18:46:48.894: E/AndroidRuntime(12325): at com.simplistic.simplisticmusicfree.AlbumsList.onListItemClick(AlbumsList.java:93)
so on line 93, you are asking an "Object" that is actually "NULL" to execute or reference data or method, I would guess that it is as simple as the
Code:
private Cursor cursor;
You never assign it anything, you just create a null reference there. But then you ask it (Being null at this point) to ".moveToPosition()"
BTW: Still not fully awake and only glimpsed at your post
Click to expand...
Click to collapse
Thanks for the reply, I'll have to re look the code and see what I can do, also I'd like to note that I downloaded your beta app and I have to say it certainly looks promising, so im looking forward to official release

AmatuerAppDeveloper said:
Thanks for the reply, I'll have to re look the code and see what I can do, also I'd like to note that I downloaded your beta app and I have to say it certainly looks promising, so im looking forward to official release
Click to expand...
Click to collapse
Thanks for the download Yeah well my 1st app, and still a number of months away from what I would call "releasable".. Need to get all the user in app theming ability in there

Related

android ksoap2 Caused by: java.lang.RuntimeException: Cannot serialize:

Hi
In my project i am using ksoap2-android-assembly-2.4-jar-with-dependencies.jar for web service purpose.
I got able to access the service and passing simple parameters and get the objects and iterate it.
But the problem is i cant able to send the complex object. Can anybody know how to pass the complex object with date and double values.
Employee object have string name, int number, double salary and Date dateOfBirth.
And the employee object implements KvmSerializable
name="Mike"
number=2;
salary=20000
dateOfBirth = new Date();
and the code is
SOAP_ACTION = "http://xysed/GetHRA";
METHOD_NAME = "GetHRA";
TextView authenticate = new TextView(this);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi = new PropertyInfo();
pi.setName("employee");
Employee e = new Employee();
e.setNumber(4);
e.setName("Ananth");
e.setSalary(20000);
e.setDob(new Date());
pi.setValue(e);
pi.setType(Employee.EMPLOYEE_CLASS);
request.addProperty(pi);
request.addProperty("employee", e);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
Marshal dateMarshal = new MarshalDate();
dateMarshal.register(envelope);
//envelope.addMapping(Employee.NAMESPACE, "Employee", new Employee().getClass());
try {
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
//String fullName = (String)envelope.getResponse();
Log.v("Full String :", envelope.getResponse().toString());
Log.v("body in :", envelope.bodyIn.toString());
Log.v("body out :", envelope.bodyOut.toString());
authenticate.setText(envelope.getResponse().toString());
this.setContentView(authenticate);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (XmlPullParserException xpe) {
xpe.printStackTrace();
}
I pass this employee object as a request i got an error like
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oak.soap.test/com.oak.soap.test.WebserviceDisplay}: java.lang.RuntimeException: Cannot serialize: 20000.0
here 20000.0 is a salary ( double value)
ERROR/AndroidRuntime(287): Caused by: java.lang.RuntimeException: Cannot serialize: 20000.0
Can anybody provide samples for how to pass complex object as request to web service
Thanks
mindus

Getting a widget to pull data from database?

Right so I've created a very basic widget. It does nothing but display some text. The mechanics to setting it up are easy to learn. Now that I've learnt that I have to move on to what I actually want my widget to do. That would be where the database is involved. I want it to pull data from a database and have it show on my widget.
Eventually I will progress it so that the user can tap on it to bring up another bit of data from the database or just have a button do it. Right now though I just need to just get the data to show up. Let's say I have 500 rows, well I want the database to pull 1 row at random.
You don't need to tell me about the basics of a database because I already know that, I've used SQLite and all that, it's just getting it to work with a AppWidgetProvider that I can't get.
In fact I can already pull a random row from a database but I've only done it in an Activity. So how do I do this for a widget? Hopefully somoene here has experience with widgets!
I would really appreciate any help, thanks!
I used RemoteViews to manipulate/access my widget buttons from the provider. I'm not sure what type of view you are working with but look those up. It may be what you are looking for.
zalez said:
I used RemoteViews to manipulate/access my widget buttons from the provider. I'm not sure what type of view you are working with but look those up. It may be what you are looking for.
Click to expand...
Click to collapse
Interesting. I'll look into that. I saw some bits of code with RemoteViews but I have no idea about them so I better get learning.
Any chance there are some decent tutorials out there? I get the idea that a RemoteView is what handles the communication for the UI but I still don't get how I can pull data with that involved.
I mean would this work for example: http://stackoverflow.com/questions/5661815/app-with-widget-accesing-to-database?rq=1
I've seen some with tonnes of code and then there's the one above which only has a few lines.
When I went through this, I didn't find any tutorials so I pushed through it myself. Do you have a class to do your database queries?
Using a remote view to change the text you could use something like this inside your onUpdate:
Code:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget); //set your widget layout
remoteViews.setImageViewResource(R.id.btnToggle, R.drawable.toggle_off); //this changes the image in the imageview btnToggle, remoteViews lets you use setText and a couple of other to manipulate certain widget items
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
This is just a quick example pulled from one of my apps, you could put the database function above it to grab the line of text you want and then set the text in the remote view. The updateAppWidget will update all widgets with this view so if you have multitple different widgets then you'll need to pass the specific widgetId rather then the array.
If you want it to update with a button press on the widget, I would advice you set a pending intent which launches a service, does what you need it to do and then the service update the widget using remote views much like the above code.
Hope that helps
zalez said:
When I went through this, I didn't find any tutorials so I pushed through it myself. Do you have a class to do your database queries?
Click to expand...
Click to collapse
I am using the AppWidgetProvider to carry on my database query, within the onUpdate method. I have posted my code in the link below, on a question I asked on SO.
crazyfool_1 said:
Using a remote view to change the text you could use something like this inside your onUpdate:
Code:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget); //set your widget layout
remoteViews.setImageViewResource(R.id.btnToggle, R.drawable.toggle_off); //this changes the image in the imageview btnToggle, remoteViews lets you use setText and a couple of other to manipulate certain widget items
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
This is just a quick example pulled from one of my apps, you could put the database function above it to grab the line of text you want and then set the text in the remote view. The updateAppWidget will update all widgets with this view so if you have multitple different widgets then you'll need to pass the specific widgetId rather then the array.
If you want it to update with a button press on the widget, I would advice you set a pending intent which launches a service, does what you need it to do and then the service update the widget using remote views much like the above code.
Hope that helps
Click to expand...
Click to collapse
Since my last post I have actually done something similar to this, if not the exact same thing. I had to post a question to stack overflow because I was getting a 'process is bad' warning here is the link: http://stackoverflow.com/questions/...base-to-show-on-widget-not-getting-a-response
I chucked the code I've used in the link.
Maybe you could provide some input there? I have been given one answer that I will now look at.
Thanks for helping as well!
Edit: For what it's worth I'm happy to make this project fully opensource once it works for others who want to do the same thing.
I cannot see the link.
EDIT: Thanks.
RED_ said:
I am using the AppWidgetProvider to carry on my database query, within the onUpdate method. I have posted my code in the link below, on a question I asked on SO.
Since my last post I have actually done something similar to this, if not the exact same thing. I had to post a question to stack overflow because I was getting a 'process is bad' warning here is the link: http://stackoverflow.com/questions/...base-to-show-on-widget-not-getting-a-response
I chucked the code I've used in the link.
Maybe you could provide some input there? I have been given one answer that I will now look at.
Thanks for helping as well!
Edit: For what it's worth I'm happy to make this project fully opensource once it works for others who want to do the same thing.
Click to expand...
Click to collapse
Hmm, two things to try is first, uninstall, reboot, install. Sounds obvious but sometimes Eclipse/Android does weird things and a number of Google results suggest this fixes it. Secondly try adding android:label="@string/app_name" to you application tag in the manifest as per here.
If that doesn't work let us know, I think I have an idea of what else it could be but let's see..
crazyfool_1 said:
Hmm, two things to try is first, uninstall, reboot, install. Sounds obvious but sometimes Eclipse/Android does weird things and a number of Google results suggest this fixes it. Secondly try adding android:label="@string/app_name" to you application tag in the manifest as per here.
If that doesn't work let us know, I think I have an idea of what else it could be but let's see..
Click to expand...
Click to collapse
Weird, I'm getting a force close after uninstalling rebooting and installing. Here is the logcat:
Code:
05-01 18:07:02.480: E/AndroidRuntime(2546): FATAL EXCEPTION: main
05-01 18:07:02.480: E/AndroidRuntime(2546): java.lang.RuntimeException: Unable to start receiver com.test.application.TestWidget: java.lang.NullPointerException
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.app.ActivityThread.access$1500(ActivityThread.java:141)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.os.Handler.dispatchMessage(Handler.java:99)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.os.Looper.loop(Looper.java:137)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-01 18:07:02.480: E/AndroidRuntime(2546): at java.lang.reflect.Method.invokeNative(Native Method)
05-01 18:07:02.480: E/AndroidRuntime(2546): at java.lang.reflect.Method.invoke(Method.java:511)
05-01 18:07:02.480: E/AndroidRuntime(2546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-01 18:07:02.480: E/AndroidRuntime(2546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-01 18:07:02.480: E/AndroidRuntime(2546): at dalvik.system.NativeStart.main(Native Method)
05-01 18:07:02.480: E/AndroidRuntime(2546): Caused by: java.lang.NullPointerException
05-01 18:07:02.480: E/AndroidRuntime(2546): at com.test.application.TestWidget.updateWidgetContent(TestWidget.java:27)
05-01 18:07:02.480: E/AndroidRuntime(2546): at com.test.application.TestWidget.onUpdate(TestWidget.java:22)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:66)
05-01 18:07:02.480: E/AndroidRuntime(2546): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376)
05-01 18:07:02.480: E/AndroidRuntime(2546): ... 10 more
Edit: My manifest already has android:label="@string/app_name" in the application tag and the receiver tag.
RED_ said:
Weird, I'm getting a force close after uninstalling rebooting and installing. Here is the logcat:
...
Edit: My manifest already has android:label="@string/app_name" in the application tag and the receiver tag.
Click to expand...
Click to collapse
Your dbHelper is null. You have DBHelper dbhelper; but it's never initialized.
crazyfool_1 said:
Your dbHelper is null. You have DBHelper dbhelper; but it's never initialized.
Click to expand...
Click to collapse
You see I thought I fixed that by putting in the last method.
Code:
private static DBHelper getDatabaseHelper(Context context) { }
I might revert back to what I had before. I'll see what I can do.
RED_ said:
You see I thought I fixed that by putting in the last method.
Code:
private static DBHelper getDatabaseHelper(Context context) { }
I might revert back to what I had before. I'll see what I can do.
Click to expand...
Click to collapse
That might work but you haven't called it correctly.. It should be something like the following (untested):
Code:
public static void updateWidgetContent(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
dbhelper = getDatabaseHelper(context);
dbhelper.openDatabase();
String name = "basestring";
Cursor c = dbHelper.getReadableDatabase().rawQuery("SELECT * FROM websites ORDER BY RANDOM()", null);
name = c.getString(c.getColumnIndex("weburl"));
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.main);
remoteView.setTextViewText(R.id.TextView1, name);
dbhelper.close();
appWidgetManager.updateAppWidget(appWidgetIds, remoteView);
}
crazyfool_1 said:
That might work but you haven't called it correctly.. It should be something like the following (untested):
Code:
public static void updateWidgetContent(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
dbhelper = getDatabaseHelper(context);
dbhelper.openDatabase();
String name = "basestring";
Cursor c = dbHelper.getReadableDatabase().rawQuery("SELECT * FROM websites ORDER BY RANDOM()", null);
name = c.getString(c.getColumnIndex("weburl"));
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.main);
remoteView.setTextViewText(R.id.TextView1, name);
dbhelper.close();
appWidgetManager.updateAppWidget(appWidgetIds, remoteView);
}
Click to expand...
Click to collapse
i can't tell if this is progress or not. I have a new error. Cannot open the database.
Code:
05-01 18:33:57.510: E/AndroidRuntime(3440): FATAL EXCEPTION: main
05-01 18:33:57.510: E/AndroidRuntime(3440): java.lang.RuntimeException: Unable to start receiver com.test.application.TestWidget: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2383)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.app.ActivityThread.access$1500(ActivityThread.java:141)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.os.Handler.dispatchMessage(Handler.java:99)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.os.Looper.loop(Looper.java:137)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-01 18:33:57.510: E/AndroidRuntime(3440): at java.lang.reflect.Method.invokeNative(Native Method)
05-01 18:33:57.510: E/AndroidRuntime(3440): at java.lang.reflect.Method.invoke(Method.java:511)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-01 18:33:57.510: E/AndroidRuntime(3440): at dalvik.system.NativeStart.main(Native Method)
05-01 18:33:57.510: E/AndroidRuntime(3440): Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.text.database.DBHelper.openDatabase(DBHelper.java:62)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.test.application.TestWidget.getDatabaseHelper(TestWidget.java:45)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.test.application.TestWidget.updateWidgetContent(TestWidget.java:26)
05-01 18:33:57.510: E/AndroidRuntime(3440): at com.test.application.TestWidget.onUpdate(TestWidget.java:21)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:66)
05-01 18:33:57.510: E/AndroidRuntime(3440): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2376)
05-01 18:33:57.510: E/AndroidRuntime(3440): ... 10 more
I'm about to clean my project and do an uninstall reboot install.
RED_ said:
i can't tell if this is progress or not. I have a new error. Cannot open the database.
...
I'm about to clean my project and do an uninstall reboot install.
Click to expand...
Click to collapse
A new error is always progress ha ha
It looks like there's a problem with your openDatabase method, best bet would be to set some breakpoints and see where it falls over..
crazyfool_1 said:
A new error is always progress ha ha
It looks like there's a problem with your openDatabase method, best bet would be to set some breakpoints and see where it falls over..
Click to expand...
Click to collapse
I guess so! Thing is a copied the openDatabase method from another project of mine where it works just fine.
It's fairly straightforward in that sense.
Code:
public void openDatabase() throws SQLException {
String myPath = DB_PATH + DB_NAME;
myData = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
Edit: The crap thing is that there is not a single open source project out there that helps me with this, that I can find anyway. I'm definitely making this open source if I can get it to work.
Here is my DB class that I use. I stripped alot of my functions out but left some to show how I access the DB.
To Call from any activity:
Code:
DBAdapter db = new DBAdapter(this);
db.open();
db.AnyFunctionYouCreate();
db.close();
Code:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter
{
public static final String KEY_ROWID = "_id";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "YourAppName";
private static final int DATABASE_VERSION = 4; //(increased 6/13)increase this when changing db layout
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
[user=439709]@override[/user]
public void onCreate(SQLiteDatabase db)
{
db.execSQL("SQL_TO_CREATE_TABLES_HERE");
}
[user=439709]@override[/user]
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS your_table");
onCreate(db);
}
}
public Cursor lastId() {
Cursor yCursor = db.rawQuery("SELECT last_insert_rowid();", null);
if (yCursor != null){
yCursor.moveToFirst();
}
return yCursor;
}
//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---retrieves all responses---
public Cursor getCustomResponse(String number)
{
Cursor cur = db.rawQuery("SELECT " + REP_RESPONSE +
" from " + MY_REPLIES + " where " + REP_AUDIENCE + " = " + number ,new String [] {});
return cur;
/*return db.query(MY_REPLIES, new String[] {
KEY_ROWID,
REP_RESPONSE,
REP_AUDIENCE},
null,
null,
null,
null,
null);*/
}
public Cursor getSetting(String what_table, String what_item)
{
Cursor cur = db.rawQuery("SELECT " + what_item +
" from " + what_table ,new String [] {});
return cur;
}
/**
* Updates Settings Table
*
* [user=955119]@param[/user] long RowId
* [user=955119]@param[/user] String Response
* [user=955119]@param[/user] String LocationStatus
* [user=955119]@param[/user] String LocationPassword
* [user=955119]@param[/user] String TTSStatus
* [user=955119]@param[/user] String VoiceReply
* [user=955119]@param[/user] String AppendMsg
* [user=955119]@param[/user] String NoReplyTimer
* [user=2056652]@return[/user] boolean
*/
public boolean updateSetting(long rowId, String settingResponse,
String locatorStatus, String locatorPass, String tts, String reply, String msgAppend, String timeDelay,
String auto, String silent, String shake)
{
ContentValues initialValues = new ContentValues();
initialValues.put(BUT_RESPONSE, settingResponse);
initialValues.put(BUT_LOCATOR, locatorStatus);
initialValues.put(BUT_LOC_PASS, locatorPass);
initialValues.put(BUT_TTS, tts);
initialValues.put(BUT_VOICE, reply);
initialValues.put(BUT_APPEND, msgAppend);
initialValues.put(BUT_TIME, timeDelay);
initialValues.put(BUT_AUTO_OFF, auto);
initialValues.put(BUT_SILENT, silent);
initialValues.put(BUT_SHAKE, shake);
return db.update(BUTLER_SETTINGS, initialValues,
KEY_ROWID + "=" + rowId, null) > 0;
}
public void emptySmsLog(){
db.execSQL("DELETE FROM sms_log;");
}
}
zalez said:
Here is my DB class that I use. I stripped alot of my functions out but left some to show how I access the DB.
To Call from any activity:
Code:
DBAdapter db = new DBAdapter(this);
db.open();
db.AnyFunctionYouCreate();
db.close();
Code:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter
{
public static final String KEY_ROWID = "_id";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "YourAppName";
private static final int DATABASE_VERSION = 4; //(increased 6/13)increase this when changing db layout
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
[user=439709]@override[/user]
public void onCreate(SQLiteDatabase db)
{
db.execSQL("SQL_TO_CREATE_TABLES_HERE");
}
[user=439709]@override[/user]
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS your_table");
onCreate(db);
}
}
public Cursor lastId() {
Cursor yCursor = db.rawQuery("SELECT last_insert_rowid();", null);
if (yCursor != null){
yCursor.moveToFirst();
}
return yCursor;
}
//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---retrieves all responses---
public Cursor getCustomResponse(String number)
{
Cursor cur = db.rawQuery("SELECT " + REP_RESPONSE +
" from " + MY_REPLIES + " where " + REP_AUDIENCE + " = " + number ,new String [] {});
return cur;
/*return db.query(MY_REPLIES, new String[] {
KEY_ROWID,
REP_RESPONSE,
REP_AUDIENCE},
null,
null,
null,
null,
null);*/
}
public Cursor getSetting(String what_table, String what_item)
{
Cursor cur = db.rawQuery("SELECT " + what_item +
" from " + what_table ,new String [] {});
return cur;
}
/**
* Updates Settings Table
*
* [user=955119]@param[/user] long RowId
* [user=955119]@param[/user] String Response
* [user=955119]@param[/user] String LocationStatus
* [user=955119]@param[/user] String LocationPassword
* [user=955119]@param[/user] String TTSStatus
* [user=955119]@param[/user] String VoiceReply
* [user=955119]@param[/user] String AppendMsg
* [user=955119]@param[/user] String NoReplyTimer
* [user=2056652]@return[/user] boolean
*/
public boolean updateSetting(long rowId, String settingResponse,
String locatorStatus, String locatorPass, String tts, String reply, String msgAppend, String timeDelay,
String auto, String silent, String shake)
{
ContentValues initialValues = new ContentValues();
initialValues.put(BUT_RESPONSE, settingResponse);
initialValues.put(BUT_LOCATOR, locatorStatus);
initialValues.put(BUT_LOC_PASS, locatorPass);
initialValues.put(BUT_TTS, tts);
initialValues.put(BUT_VOICE, reply);
initialValues.put(BUT_APPEND, msgAppend);
initialValues.put(BUT_TIME, timeDelay);
initialValues.put(BUT_AUTO_OFF, auto);
initialValues.put(BUT_SILENT, silent);
initialValues.put(BUT_SHAKE, shake);
return db.update(BUTLER_SETTINGS, initialValues,
KEY_ROWID + "=" + rowId, null) > 0;
}
public void emptySmsLog(){
db.execSQL("DELETE FROM sms_log;");
}
}
Click to expand...
Click to collapse
Thanks, just got around to finding some time. Do you think I need to implement all of that for what I need? Obviously changing the actual calls to the database. Also DATABASE_NAME = "YourAppName" should be where your database name goes not your app name right? Or have I got that wrong?
You would be the only one to decide if you need all of that class. I reuse it in many apps for database purposes. That class is what I use with my widget provider. DATABASE_NAME is for your app name. Because when your app creates a database in the system/data area, it is stored by appname.
RED_ said:
Thanks, just got around to finding some time. Do you think I need to implement all of that for what I need? Obviously changing the actual calls to the database. Also DATABASE_NAME = "YourAppName" should be where your database name goes not your app name right? Or have I got that wrong?
Click to expand...
Click to collapse
zalez said:
You would be the only one to decide if you need all of that class. I reuse it in many apps for database purposes. That class is what I use with my widget provider. DATABASE_NAME is for your app name. Because when your app creates a database in the system/data area, it is stored by appname.
Click to expand...
Click to collapse
Ok, well it's telling me it can't find a table called "websites" in my database. I know for sure there it's there. This is annoying.
Here's the code I used from yours in my DBAdapter: http://pastebin.com/v0CWcr3t
and how I called it in my widget provider: http://pastebin.com/LDmvASdK
EDIT: I think the error is because I have my database in my assets folder and we are not copying it to the data/data folder.

How can I count how many fragments are there in an activity?

Hi guys,
I just want to know if there is some code to get the current number of fragments displayed on the screen.
Reason for this is, I can tell if two different of them overlaps, but I can't tell if they're equal.
I tried getSupportFragmentManager().getFragments().size() but it doesn't work as it seems as getSupportFragmentManager().getFragments() returns null...
domenicop said:
Hi guys,
I just wanting to know if there is some code to get the current number of fragments displayed on the screen.
Reason for this is, I can tell if two different of them overlaps, but I can't tell if they're equal.
I tried getSuppoertFragmentManager().getFragments().size() but it doesn't work as it seems, getSuppoertFragmentManager().getFragments() returns null...
Click to expand...
Click to collapse
No one can do that? It would be such a helpful little snippet of code....
Maybe you called the method before the Fragments were created? Or you're using a ViewPager. Code...
nikwen said:
Maybe you called the method before the Fragments were created? Or you're using a ViewPager. Code...
Click to expand...
Click to collapse
I am not asking in regard to a particular snippet of code, the problem is generic. I want to be able to count the fragments that are currently on the screen.
Maybe I understood your answer. You're saying that
Code:
getSupportFragmentManager().getFragments().size()
is the right way to check and so want to see code to check his strange behavior? BTW, I'm using a ViewPager (it is one of the fragments in my activity)
domenicop said:
I am not asking in regard to a particular snippet of code, the problem is generic. I want to be able to count the fragments that are currently on the screen.
Maybe I understood your answer. You're saying that
Code:
getSupportFragmentManager().getFragments().size()
is the right way to check and so want to see code to check his strange behavior? BTW, I'm using a ViewPager (it is one of the fragments in my activity)
Click to expand...
Click to collapse
Do you mean Fragments that are actually visible to the user or just those that have been created?
Yeah, that should be the right code... However, it doesn't include the Fragments which were added to the ViewPager as they haven't been added to the Activity/FragmentManager.
nikwen said:
Do you mean Fragments that are actually visible to the user or just those that have been created?
Yeah, that should be the right code... However, it doesn't include the Fragments which were added to the ViewPager as they haven't been added to the Activity/FragmentManager.
Click to expand...
Click to collapse
This is the main activity (it's the same one as the other post)
Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Initialize the mDatabase
mContactsDatabase = ContactsDatabase.getInstance(getApplicationContext());
// Determine device orientation
mDualPane = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
// Set the fragment that will be changed
mFragmentToReplace = mDualPane ? R.id.contactsPagerFragmentContainer : R.id.portraitFragmentContainer;
// Set up the GUI
FragmentManager fm = getSupportFragmentManager();
if (!mDualPane) {
Log.d(TAG, "Orientation Portrait detected.");
// First, look for previously saved fragments
// findByFragmentId(int id) look for the fragment that was previously associated
// to the resource that has for id the argument passed in. Then, we try to cast it
// to the type of fragment we want, and if that's correct, we have our fragment
mContactListFragment = (ContactListFragment) fm.findFragmentById(R.id.portraitFragmentContainer);
if (mContactListFragment == null) {
mContactListFragment = ContactListFragment.newInstance(mContactsDatabase);
fm.beginTransaction()
.replace(R.id.portraitFragmentContainer, mContactListFragment, CONTACT_LIST_FRAGMENT)
.commit();
}
}
else {
Log.d(TAG, "Orientation Landscape detected.");
// First, look for previously saved fragments
mContactListFragment = (ContactListFragment) fm.findFragmentById(R.id.landscapeFragmentContainer);
mContactsPagerFragment = (ContactsPagerFragment) fm.findFragmentById(R.id.contactsPagerFragmentContainer);
if (mContactListFragment == null) {
mContactListFragment = ContactListFragment.newInstance(mContactsDatabase);
fm.beginTransaction()
.replace(R.id.contactListFragmentContainer, mContactListFragment, CONTACT_LIST_FRAGMENT)
.commit();
}
if (mContactsPagerFragment == null) {
final int FIRST_CONTACT_POSITION = 0;
mContactListFragment = ContactListFragment.newInstance(mContactsDatabase);
mContactsPagerFragment =
ContactsPagerFragment.newInstance(FIRST_CONTACT_POSITION, mContactsDatabase);
fm.beginTransaction()
.replace(R.id.contactsPagerFragmentContainer, mContactsPagerFragment, CONTACTS_PAGER_FRAGMENT)
.commit();
}
}
Log.d(TAG, "# of Fragments on the screen" + getSupportFragmentManager().getFragments().size());
}
Penultimate line is the one that throws a NullPointerException.
Working fine for me here:
Code:
# of Fragments on the screen1
nikwen said:
Working fine for me here:
Code:
# of Fragments on the screen1
Click to expand...
Click to collapse
Maybe it's something with the fragments initialization. How did you run your code?
domenicop said:
Penultimate line is the one that throws a NullPointerException.
Click to expand...
Click to collapse
Did you import the right Fragment from the v4 compatibility lib? Otherwise, you'd have to use getFragmentManager() instead!
Edit: I see, you're using it above as well so it shouldn't be the case, could you try to call fm.getFragments() and see what it returns, where fm is the FragmentManager you already created?
@SimplicityApks It was so before, it still crashes if I use the fm fragment manager.
I add the logcat output for what it's worth:
Code:
11-04 23:20:48.640: ERROR/AndroidRuntime(10131): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.domenicop.census/com.domenicop.census.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
at android.app.ActivityThread.access$600(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5289)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:115)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.domenicop.census.MainActivity.onCreate(MainActivity.java:104)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)
... 12 more
11-04 23:20:48.650: WARN/ActivityManager(2322): Force finishing activity com.domenicop.census/.MainActivity
11-04 23:20:49.185: WARN/ActivityManager(2322): Activity pause timeout for ActivityRecord{42ad16f0 u0 com.domenicop.census/.MainActivity}
MainActivity.java:104 is the penultimate line of the class. The incriminated one.
domenicop said:
MainActivity.java:104 is the penultimate line of the class. The incriminated one.
Click to expand...
Click to collapse
What's null, fm or mContactsPagerFragment ?
fm.getFragments() does return null... How could that possibly be? I just instantiated them. Maybe I have to wait till they construct heir views?
I jus checked in the Android Developer API and I couldn't find any mention about this method. Eclipse was suggesting it.
I guess it's been deprecated, but even if that is true, why would it completely disappear?
Please someone that doublecheck on this. (I found getFragment (Bundle bundle, String key), no trace of getFragment...)
fm.getFragments() does return null... How could that possibly be? I just instantiated the fragments. Maybe I have to wait till they construct heir views?
EDIT
I just checked in the Android Developer API and I couldn't find any mention about this method. Eclipse is suggesting it.
I guess it's been deprecated, but even if that is true, why would it completely disappear?
Please someone that double-check on this. (I found getFragment (Bundle bundle, String key), no trace of getFragment...)
Also, thank you for talking to me, on other forums I feel like an alien when opening a 3d about android developer questions
domenicop said:
fm.getFragments() does return null... How could that possibly be? I just instantiated the fragments. Maybe I have to wait till they construct heir views?
EDIT
I just checked in the Android Developer API and I couldn't find any mention about this method. Eclipse is suggesting it.
I guess it's been deprecated, but even if that is true, why would it completely disappear?
Please someone that double-check on this. (I found getFragment (Bundle bundle, String key), no trace of getFragment...)
Also, thank you for talking to me, on other forums I feel like an alien when opening a 3d about android developer questions
Click to expand...
Click to collapse
Have you tested whether getFragments() returns null even if you call that method later (for example when a button is pressed)?
nikwen said:
Have you tested whether getFragments() returns null even if you call that method later (for example when a button is pressed)?
Click to expand...
Click to collapse
I just checked and it works if I don't call it from the MainActivity, anyway I've to say the results are not that comfortable. In some cases I've seen some output as scary as # of fragments on the screen is 45
It would be nice to know how this method works though. Without documentation, I can't really make any conclusion here.
Thank you for your help, and please report in this thread if you can find any explanation about the behavior of this method.
Bye.
domenicop said:
Hi guys,
I just want to know if there is some code to get the current number of fragments displayed on the screen.
Reason for this is, I can tell if two different of them overlaps, but I can't tell if they're equal.
I tried getSupportFragmentManager().getFragments().size() but it doesn't work as it seems as getSupportFragmentManager().getFragments() returns null...
Click to expand...
Click to collapse
if u implementing viewpager then u can simply use getCount() method to count the no. of pages.

['Http Connection'] App is crashing

Hello guys,
Well, I was working with data sharing via http. So, I made an app in which the app downloads a image after a certain button is clicked. However the app is crashing at that moment.
But when I execute
Code:
new DownloadImageTask().execute(myUrl);
from OnCreate, the app just works fine. I am completely lost here. Please help me out!
I am giving you the MainActivity.class and the logcat.
Thanks
MainActivity.class
Code:
package com.example.neew;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnClickListener{
ImageView img;
TextView text;
Thread t;
Button b;
Handler handler=new Handler();
String myUrl="http://s27.postimg.org/epsajh82q/Nissan_Skyline_Wallpaper_Photos_HD.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img=(ImageView)findViewById(R.id.images);
text=(TextView)findViewById(R.id.tex);
b=(Button)findViewById(R.id.button1);
b.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private InputStream openHttpConnection(String urlString) throws IOException{
InputStream in=null;
int response=-1;
URL url=new URL(urlString);
URLConnection urlconnection=url.openConnection();
if(!(urlconnection instanceof HttpURLConnection )){
Toast.makeText(getBaseContext(),
"Not an Http protocol",
Toast.LENGTH_LONG).show();
}else{
try{
HttpURLConnection conn=(HttpURLConnection)urlconnection;
conn.setAllowUserInteraction(false);
conn.setInstanceFollowRedirects(true);
conn.setRequestMethod("GET");
conn.connect();
text.setText("conn made");
response=conn.getResponseCode();
if(response==HttpURLConnection.HTTP_OK){
//text.setText("Connection made-Protocol accepted");
runner("Protocol is setuped");
in=conn.getInputStream();
}
}catch(Exception e){
Toast.makeText(getBaseContext(), e.toString(), 3000).show();
}
}
//text.setText("Stream returned");
runner("stream is returned");
return in;
}
private Bitmap downloadImage(String url){
Bitmap bitmap=null;
InputStream input=null;
try{
input=openHttpConnection(url);
bitmap=BitmapFactory.decodeStream(input);
input.close();
}catch(IOException e){
Toast.makeText(getApplicationContext(), e.toString(), 3467).show();
}
runner("Bitmap is downloaded");
return bitmap;
}
public void Theader(final String msg){
t=new Thread(new Runnable(){
public void run(){
handler.post(new Runnable(){
public void run(){
text.setText(msg);
}
});
}
});
t.start();
}
@SuppressWarnings("deprecation")
public void runner(String s){
Theader(s);
if(text.getText().toString()==s)
{
t.stop();
}
}
private class DownloadImageTask extends AsyncTask<String,Void,Bitmap>{
@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
runner("Downloading bitmap");
return downloadImage(params[0]);
}
protected void onPostExecute(Bitmap result){
runner("Bitmap is set");
img.setImageBitmap(result);
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DownloadImageTask().execute(myUrl);
}
}
________________________________________________________________________________________________
Logcat
Code:
08-16 09:12:22.442: I/dalvikvm(707): threadid=3: reacting to signal 3
08-16 09:12:22.518: I/dalvikvm(707): Wrote stack traces to '/data/anr/traces.txt'
08-16 09:12:22.962: I/dalvikvm(707): threadid=3: reacting to signal 3
08-16 09:12:23.022: I/dalvikvm(707): Wrote stack traces to '/data/anr/traces.txt'
08-16 09:12:23.481: I/dalvikvm(707): threadid=3: reacting to signal 3
08-16 09:12:23.511: I/dalvikvm(707): Wrote stack traces to '/data/anr/traces.txt'
08-16 09:12:23.631: D/gralloc_goldfish(707): Emulator without GPU emulation detected.
08-16 09:25:43.031: W/dalvikvm(707): threadid=11: thread exiting with uncaught exception (group=0x2ba041f8)
08-16 09:25:43.061: E/AndroidRuntime(707): FATAL EXCEPTION: AsyncTask #1
08-16 09:25:43.061: E/AndroidRuntime(707): java.lang.RuntimeException: An error occured while executing doInBackground()
08-16 09:25:43.061: E/AndroidRuntime(707): at android.os.AsyncTask$3.done(AsyncTask.java:278)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-16 09:25:43.061: E/AndroidRuntime(707): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.lang.Thread.run(Thread.java:856)
08-16 09:25:43.061: E/AndroidRuntime(707): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-16 09:25:43.061: E/AndroidRuntime(707): at android.os.Handler.<init>(Handler.java:121)
08-16 09:25:43.061: E/AndroidRuntime(707): at android.widget.Toast$TN.<init>(Toast.java:317)
08-16 09:25:43.061: E/AndroidRuntime(707): at android.widget.Toast.<init>(Toast.java:91)
08-16 09:25:43.061: E/AndroidRuntime(707): at android.widget.Toast.makeText(Toast.java:233)
08-16 09:25:43.061: E/AndroidRuntime(707): at com.example.neew.MainActivity.openHttpConnection(MainActivity.java:86)
08-16 09:25:43.061: E/AndroidRuntime(707): at com.example.neew.MainActivity.downloadImage(MainActivity.java:97)
08-16 09:25:43.061: E/AndroidRuntime(707): at com.example.neew.MainActivity.access$0(MainActivity.java:93)
08-16 09:25:43.061: E/AndroidRuntime(707): at com.example.neew.MainActivity$DownloadImageTask.doInBackground(MainActivity.java:138)
08-16 09:25:43.061: E/AndroidRuntime(707): at com.example.neew.MainActivity$DownloadImageTask.doInBackground(MainActivity.java:1)
08-16 09:25:43.061: E/AndroidRuntime(707): at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-16 09:25:43.061: E/AndroidRuntime(707): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-16 09:25:43.061: E/AndroidRuntime(707): ... 5 more
08-16 09:25:47.902: I/Process(707): Sending signal. PID: 707 SIG: 9
Wohooooo !!!is anybody there
Sent from my GT-P3100 using XDA Free mobile app
hiphop12ism said:
Wohooooo !!!is anybody there
Sent from my GT-P3100 using XDA Free mobile app
Click to expand...
Click to collapse
If you read the logcat it tells you the exact line in your code that is causing the error.
Sent from my HTC One using Tapatalk
Yes i have
Sent from my GT-P3100 using XDA Free mobile app
hiphop12ism said:
Yes i have
Click to expand...
Click to collapse
This is not the way I'd normally answer, but my advice is to use volley for all internet things. They even had an IO talk about it
Gohan said:
Is this for downloading or can it be used to send data to POST php scripts?
Click to expand...
Click to collapse
You should be able to use it for both, at some point you select if you want httpPost or get and if you want it to be a String or JSON or some other request.
Can't create handler inside thread that has not called Looper.prepare()
you should create a handler as a field, call its when you need, not create new hanlder in thread
But it is working perfectly fine when i execute asynctask from onCreate.
Ps: sorry I am quite new to multithreading
Sent from my GT-P3100 using XDA Free mobile app

Anyone took a look at the BT-2000?

The BT-2000 is out as well, and I have had the pleasure of using it for two weeks. It's an interesting device with a stereoscopic camera on the front. Any thoughts of what we could do with a cool feature like that? And are there people out here that see advantages over the BT-200?
My thoughts:
Pros:
Great battery life
Great see through screen
Can handle a bump
Interesting features like IMU
Cons:
Too big, too bulky
5 megapixel camera lacks autofocus
Wired controller isn't very cool
More info:
Epson SDK and developers info
Article about the BT-2000
Bt-2000 pro
Pros:
- Android tablet version
Cons:
- no Moverio app store
- no mouse
- no installed app (for example : no glass mirror)
- no control over display and camera setting
BT2000pro said:
Pros:
- Android tablet version
Cons:
- no Moverio app store
- no mouse
- no installed app (for example : no glass mirror)
- no control over display and camera setting
Click to expand...
Click to collapse
Not totally true, you can use the camera settings with the SDK provided by Epson. Mouse works with an OTG cable.
Hi, anyone developped program for BT-2000 ..?
I have some issues with the EPSON library.
I don't understand why I'm not abble to call some methods form Camera class like setEpsonCameraMode();
If you have ideas ..?
Thanks
Franck
Franck_Cordu said:
Hi, anyone developped program for BT-2000 ..?
I have some issues with the EPSON library.
I don't understand why I'm not abble to call some methods form Camera class like setEpsonCameraMode();
If you have ideas ..?
Thanks
Franck
Click to expand...
Click to collapse
Dear Franck,
This is because Android Studio doesn't recognize these methods as being correct, so it will mark then as faulty or non-existing. You can run the app on the Moverio BT-2000 and you will see that it will work. Don't forget to set the camera fps and preview size to the correct supported values otherwise the app will crash.
Good luck!
Thanks for your answer.
But, I'm sorry, how can you dev apps witch don't compile in Android Studio and install it on the BT2000..?
Moreover, I have contact EPSON support and they gave me a solution to make this methods recognizable by android studio I can give the solution here if someone is interested.
So there is a compatibility problem with packages names.
To finish, I finally succeed to change camera mode, and as you said you have to well configure parameters if not there is a crash. By any chance have you the good parameters to set 5m pixel mode and depth only mode ..?
Thanks a lot for your help,
Best regards,
Franck_Cordu said:
Thanks for your answer.
But, I'm sorry, how can you dev apps witch don't compile in Android Studio and install it on the BT2000..?
Moreover, I have contact EPSON support and they gave me a solution to make this methods recognizable by android studio I can give the solution here if someone is interested.
So there is a compatibility problem with packages names.
To finish, I finally succeed to change camera mode, and as you said you have to well configure parameters if not there is a crash. By any chance have you the good parameters to set 5m pixel mode and depth only mode ..?
Thanks a lot for your help,
Best regards,
Click to expand...
Click to collapse
You need to get the manual to see which FPS ranges are supported by the set camera modes. These are documented in the manual that is on the Epson website. Below the code you need:
Camera.Parameters params = mCamera.getParameters();
params.getEpsonCameraMode();
//Get the supported camera modes (one of them will be 5MP and one will be depth, check debugger for these values)
List<String> supported = params.getSupportedEpsonCameraModes();
//set the desired camera mode
params.setEpsonCameraMode(supported.get(2));
//set the supported FPS range
params.setPreviewFpsRange(7500, 7500);
//Set desired preview size and picture size
params.setPreviewSize(640, 480);
params.setPictureSize(640, 480);
Thanks, effectively that are perfect parameters for single-vga mode but have you the rights ones to 5M mode and depth mode.
When I follow the dev_guide page 62 I have a crash with 5m mode when I invoke setParameters(), with these parameters :
params.setEpsonCameraMode(Supported.get(5));
params.setPreviewSize(2596, 1948);
params.setPreviewFpsRange(7500, 7500);
params.setPictureSize(2596, 1948);
With the depth mode I use theses parameters :
params.setEpsonCameraMode(Supported.get(6));
params.setPreviewSize(640, 480);
params.setPreviewFpsRange(7500, 7500);
params.setPictureSize(640, 480);
l_pCamera.startDepthStreaming(); // I don't forget to start depth mode
And the preview is lunch but the image stay transparent, nothing happen.
If you have any solution.
Thanks a lot.
Franck_Cordu said:
Thanks, effectively that are perfect parameters for single-vga mode but have you the rights ones to 5M mode and depth mode.
When I follow the dev_guide page 62 I have a crash with 5m mode when I invoke setParameters(), with these parameters :
params.setEpsonCameraMode(Supported.get(5));
params.setPreviewSize(2596, 1948);
params.setPreviewFpsRange(7500, 7500);
params.setPictureSize(2596, 1948);
With the depth mode I use theses parameters :
params.setEpsonCameraMode(Supported.get(6));
params.setPreviewSize(640, 480);
params.setPreviewFpsRange(7500, 7500);
params.setPictureSize(640, 480);
l_pCamera.startDepthStreaming(); // I don't forget to start depth mode
And the preview is lunch but the image stay transparent, nothing happen.
If you have any solution.
Thanks a lot.
Click to expand...
Click to collapse
PreviewSize is too big with 5MP, can maximum be 1920x1080 with 7500fps. Try:
params.setEpsonCameraMode(Supported.get(5));
params.setPreviewSize(1920, 1080);
params.setPreviewFpsRange(7500, 7500);
params.setPictureSize(2596, 1948);
Don't forget to call Camera.setParameters(params);
Can't help with the depth sensing as I never used it.
Nice thanks a lot, I don't know why, but I think I done exactly the same yesterday and it didn't work, but today it work perfectly.
Thanks a lot, now I'm looking for someone who is able to set Depth mode..
Again, thanks for your time !
Franck_Cordu said:
Nice thanks a lot, I don't know why, but I think I done exactly the same yesterday and it didn't work, but today it work perfectly.
Thanks a lot, now I'm looking for someone who is able to set Depth mode..
Again, thanks for your time !
Click to expand...
Click to collapse
Your welcome, don't forget to hit the thanks button!
Load the epson Camera class version in Android Studio
Franck_Cordu said:
Thanks for your answer.
But, I'm sorry, how can you dev apps witch don't compile in Android Studio and install it on the BT2000..?
Moreover, I have contact EPSON support and they gave me a solution to make this methods recognizable by android studio I can give the solution here if someone is interested.
So there is a compatibility problem with packages names.
(...)
Click to expand...
Click to collapse
Hi Franck,
I run into the same problem. The Camera class from the Epson library has the same package name as the android Camera class: android.hardware.Camera . So Android Studio finds the android version instead of the Epson one. Can you show the solution please?
Thanks!
I'd be really interested in knowing how you (Franck_Cordu) have resolved the compilation issues with the BT-2000 API. I'm running into the same problems as you are and am desperate for a working solution!
Hello,
First a quick answer for the compilation problem:
--> have a look at the manual (https://tech.moverio.epson.com/en/bt-2000/tools.html), putting and referring correctly the H725Ctrl.jar is a key.
--> they even propose a kind of partial solution in order to have completion. It has to be redone every time you compile/recompile your program though. (Changing the order in the app.iml file)
On my side, I have a very painful problem: (version R1.3 here)
I have carefully followed their Sample Code (Ch. 6.10) but I am unable to open the camera. The system always fails at the camera.open() command in the function below, the output error is shown below the function.
Do any of you understand what may be the problem ? Or anyone could submit a working source code that I could try ....
Code:
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "surfaceCreated");
try {
camera = android.hardware.Camera.open();
camera.setPreviewDisplay(holder);
} catch (RuntimeException e) {
Log.d("SR-DEBUG", "There has been a problem opening the camera");
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
camera.addCallbackBuffer(mPreviewBuf);
camera.setPreviewCallbackWithBuffer(mPreviewCB);
}
Returned Error:
Code:
09-22 14:28:28.437 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 D/com.example.simonruffieux.test_cameradisplay_bt2000.MainActivity: surfaceCreated
09-22 14:28:28.437 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 V/Camera: connect
09-22 14:28:28.445 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 D/SR-DEBUG: There has been a problem opening the camera
09-22 14:28:28.445 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: java.lang.RuntimeException: Fail to connect to camera service
09-22 14:28:28.445 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.hardware.Camera.native_setup(Native Method)
09-22 14:28:28.445 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.hardware.Camera.<init>(Camera.java:317)
09-22 14:28:28.445 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.hardware.Camera.open(Camera.java:294)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at com.example.simonruffieux.test_cameradisplay_bt2000.MainActivity$2.surfaceCreated(MainActivity.java:70)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.SurfaceView.updateWindow(SurfaceView.java:543)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.SurfaceView.access$000(SurfaceView.java:82)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:170)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
09-22 14:28:28.453 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1617)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.os.Looper.loop(Looper.java:137)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at android.app.ActivityThread.main(ActivityThread.java:4424)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at java.lang.reflect.Method.invoke(Method.java:511)
09-22 14:28:28.460 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-22 14:28:28.468 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-22 14:28:28.468 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/System.err: at dalvik.system.NativeStart.main(Native Method)
09-22 14:28:28.468 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 D/AndroidRuntime: Shutting down VM
09-22 14:28:28.468 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x40a891f8)
09-22 14:28:28.484 11461-11461/com.example.simonruffieux.test_cameradisplay_bt2000 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.simonruffieux.test_cameradisplay_bt2000.MainActivity$2.surfaceCreated(MainActivity.java:79)
at android.view.SurfaceView.updateWindow(SurfaceView.java:543)
at android.view.SurfaceView.access$000(SurfaceView.java:82)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:170)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1617)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
I am using the following <project>/app/build.gradle:
Code:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "com.example.simonruffieux.test_cameradisplay_bt2000"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
testCompile 'junit:junit:4.12'
compile files('libs/H725Ctrl.jar')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
}
The following <project>/build.gradle
Code:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:D:/Devel/Android/test_CameraDisplay_BT2000/app/libs/H725Ctrl.jar')
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
And finally, the whole MainActivity.java class:
Code:
package com.example.simonruffieux.test_cameradisplay_bt2000;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.app.Activity;
import android.util.Log;
import android.hardware.Camera;
import android.view.WindowManager;
import android.os.Bundle;
import java.util.List;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private String TAG = this.getClass().getName();
private Camera camera = null;
private SurfaceHolder mHolder = null;
private byte[] mPreviewData = new byte[1920 * 1080 * 3 / 2];
private byte[] mPreviewBuf = new byte[1920 * 1080 * 3 / 2];
private Object lockObject = new Object();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//SR Full Screen
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(0x80000000);
//SR Tests
//camera = Camera.open();
//Camera.Parameters params = camera.getParameters();
//List<String> supportedMode = params.getSupportedEpsonCameraMode(); not accepted, says it does not know this method ...
//SR set camera callback to SurfaceView
SurfaceView cameraPreview = (SurfaceView) findViewById(R.id.preview);
mHolder = cameraPreview.getHolder();
mHolder.addCallback(previewCallback);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
private Camera.PreviewCallback mPreviewCB = new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte data[], Camera camera) {
Log.d(TAG, "Save preview image");
synchronized (lockObject) {
mPreviewData = data;
}
camera.addCallbackBuffer(mPreviewBuf);
}
};
private SurfaceHolder.Callback previewCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.d(TAG, "surfaceDestroyed");
camera.stopPreview();
camera.release();
camera = null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "surfaceCreated");
try {
camera = android.hardware.Camera.open();
camera.setPreviewDisplay(holder);
} catch (RuntimeException e) {
Log.d("SR-DEBUG", "There has been a problem opening the camera");
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
camera.addCallbackBuffer(mPreviewBuf);
camera.setPreviewCallbackWithBuffer(mPreviewCB);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
camera.stopPreview();
Camera.Parameters params = camera.getParameters();
/* Set camera mode to single-through-5m mode*/
params.setEpsonCameraMode(Camera.Parameters.EPSON_CAMERA_MODE_SINGLE_THROUGH_5M);
/* Set preview resolution to 1080p */
params.setPreviewSize(1920, 1080);
/* Set frame rate to 7.5fps */
params.setPreviewFpsRange(7500, 7500);
/* Reflect parameter change to camera device */
camera.setParameters(params);
camera.addCallbackBuffer(mPreviewData);
camera.setPreviewCallbackWithBuffer(mPreviewCB);
try {
camera.startPreview();
} catch (RuntimeException e) {
e.printStackTrace();
}
}
};
}

Categories

Resources