Use of threads with fragments - Java for Android App Development

Hi I have just started developping in android so I'am not an expert. My question is: I am creating an application with two fragments , both the fragments have to retrive data from a service in real-time. (In particular on fragment has to draw a plot using the data read and the other has to make move an avatar with the data read, all of this in real-time).My doubt is: do I have to use two threads, one for each fragments, or I can do this with just UI thread ?
To be more precise :
We are two guys that working on following project :
We have to receive data from a bluetooth 4.0 BLE sensor, and we have to send it to two diffent fragments In one we have to plot a 2d graph with AndroidPlot In the other we have to move a 3d rigged model using jpct-ae + bones.
We wanted to use a started service to handle bluetooth (by extending IntentService) , but we have a lot of doubts. If two fragments have to work in the same time we have to use two different threads ?
thanks for your answers and please let me know if my question is not clear. :highfive:

Related

[Tutorial] Smart List Adapters - Singleton Observable Lists can improve your app

I am not really sure what the guidelines are for linking to other sites here... so I hope I am not breaking the rules... but I wrote a tutorial today that I think could help alot of other Android developers when dealing with Lists and ListAdapters and I wanted to share it... I don't really want to rewrite my tutorial here... so I am going to link it.
Basically, this tutorial will show you how to make intelligent lists that only exist once in your app and inform the consuming object (such as a ListAdapter or Service) of any change that is made to the list. This will eliminate the need to call setAdapter everytime you need to change the contents of a ListView or get a new copy of the list before you need to do a loop... or whatever. This has really helped me to eliminate a TON of code dealing with the list in multiple activities and in my Service. I hope it helps you out as well.
Smart List Adapters - Singleton Observable Lists
I posted a second installment to this turorial today because the more I messed around with these Observable objects the more I realized that I had stumbled across a literal gold mine of functionality. Check it out.

Advice on what to research and study to make app that connects to web services

Hello! overflowers? I'm a beginner android developer and I have developed several apps that use the "basics" of android and java (for college requirements)
Now, I need to develop a new project that consists of making a web app which stores the records of all students from my college and the students will be able to check their records and other information from the college from their android phones.
I have done a lot of stuff with Android but I haven't done anything incluiding web queries, pulling info from a website to display into the device, etc etc.
So I want some advice here and/or tutorials that focus on this.
also, I have some important questions: 1. Can I pull information from the actual website from my college? If so, do I need to recieve some sort of permissions?
2. In case of not being able to pull information from the actual website from my college (for any reason whatsoever, like them not giving me permissions to do this), I could create a website that imitates its behavior, I would appreciate some tutorial or guide which could help me to achieve this.
Your help is very appreciated.
Btw, excuse if I'm breaking a rule here but something is not making sense to me.. the forum title says Q&A but when I mark this as a question it says this is not Q&A. I am aware this might be moved somewhere else but I dont know where.
Granolaa said:
Hello! overflowers? I'm a beginner android developer and I have developed several apps that use the "basics" of android and java (for college requirements)
Now, I need to develop a new project that consists of making a web app which stores the records of all students from my college and the students will be able to check their records and other information from the college from their android phones.
I have done a lot of stuff with Android but I haven't done anything incluiding web queries, pulling info from a website to display into the device, etc etc.
So I want some advice here and/or tutorials that focus on this.
also, I have some important questions: 1. Can I pull information from the actual website from my college? If so, do I need to recieve some sort of permissions?
2. In case of not being able to pull information from the actual website from my college (for any reason whatsoever, like them not giving me permissions to do this), I could create a website that imitates its behavior, I would appreciate some tutorial or guide which could help me to achieve this.
Your help is very appreciated.
Btw, excuse if I'm breaking a rule here but something is not making sense to me.. the forum title says Q&A but when I mark this as a question it says this is not Q&A. I am aware this might be moved somewhere else but I dont know where.
Click to expand...
Click to collapse
I would look into hosting an sqlite3 database on a server, and access it to retrieve the data from within your app.
But the problem is, by default you cannot access an online database on Android, so you'll need to add some kind of RESTful interface, the easiest way probably being a php script which will retrieve the data from the database and return it into a JSON object for example, that you can then pull from within your app.
You'll need to expose some kind of syntax from your php script so that your app can request the data for a specific user (ie row X / column Y).
There's probably a better approach, but this is what comes to my mind.

Android Examination App

I'm going to fetch the questions and answers from my web server using JSON, this data are dynamic, sometimes a question has two or three answers, question type can be any combination of the following: multiple choice, true or false, identification, fill in the blanks etc.
The answer on how to do a dynamic layout on android is to let java takeover on adding layout and components instead of XML. (is this correct?)
How can I make my app to have one activity/view per question? Is this memory intensive? For example the data from the web server contains a hundred questions.
I want the user to have access to previous questions. For example I'm currently on question number 21 and I want to go back to question number 11 for some reasons, is this possible? How can I do this? (All questions are randomized)
clonedaccnt said:
I'm going to fetch the questions and answers from my web server using JSON, this data are dynamic, sometimes a question has two or three answers, question type can be any combination of the following: multiple choice, true or false, identification, fill in the blanks etc.
The answer on how to do a dynamic layout on android is to let java takeover on adding layout and components instead of XML. (is this correct?)
How can I make my app to have one activity/view per question? Is this memory intensive? For example the data from the web server contains a hundred questions.
I want the user to have access to previous questions. For example I'm currently on question number 21 and I want to go back to question number 11 for some reasons, is this possible? How can I do this? (All questions are randomized)
Click to expand...
Click to collapse
For your view, you'd make one Layout containing multiple TextViews whose texts you set only in your java code, that way it can have different questions.
Then there is a ListView for scrolling between the questions or for instance a ViewPager.
Remember to start with small components like the question screen and worry about getting the questions from the server and stuff later
Is there anybody else wants to share their insights on this?
clonedaccnt said:
Is there anybody else wants to share their insights on this?
Click to expand...
Click to collapse
Even though it may not seem like it, this is a very simple app...and it comes down to "simple" understanding of "listview,adapters,intents,asyncTasks,JSON/GSON" and then quite a simple design flow.... if you start to learn this most of what you need you will know and what you don't you will be able to ask direct questions about (cause you will have knowledge to do so)

Can't Decide A Layout For My Android Examination

I am going to develop an android examination but I can't decide what kind of layout to use, the app will contain different type of questions(randomized), identification, multiple choice, matching, and true-false. Different examination types are commonly organized by category on a paper-based examination. The exam must also have a timer which is available on every view of the app. I want to give the user the functionality to get back on the questions that he/she skipped. How I am going to send the data back to the web server after.
Thank you and God bless!
Guys, I really need some help here.
Relative Layout is a good one always
clonedaccnt said:
I am going to develop an android examination but I can't decide what kind of layout to use, the app will contain different type of questions(randomized), identification, multiple choice, matching, and true-false. Different examination types are commonly organized by category on a paper-based examination. The exam must also have a timer which is available on every view of the app. I want to give the user the functionality to get back on the questions that he/she skipped. How I am going to send the data back to the web server after.
Thank you and God bless!
Click to expand...
Click to collapse
I would go with a RelativeLayout and then for the multiple choice a LinearLayout and maybe a FrameLayout for the going back and forth between questions and what not. Honestly , I would wait to send the info to the web server till the exam is done. So I would set up a timer lets say 30 seconds per question and if they don't answer it in time it automatically moves on and lets say at the end you were able to answer other questions faster and the total time isn't equal too 10 mins then the spare time they have can be used on questions they weren't able to answer in time and once that is done i would submit it to the server this way they don't use battery like crazy.
Relative Layout.
clonedaccnt said:
I am going to develop an android examination but I can't decide what kind of layout to use, the app will contain different type of questions(randomized), identification, multiple choice, matching, and true-false. Different examination types are commonly organized by category on a paper-based examination. The exam must also have a timer which is available on every view of the app. I want to give the user the functionality to get back on the questions that he/she skipped. How I am going to send the data back to the web server after.
Thank you and God bless!
Click to expand...
Click to collapse
A list of questions is perfectly suited for a linear layout (vertical). Inside the linear layout you could use a second linear layout (horizonal) to separate different parts of your question that should go next to each other.
This typically gives you the cleanest view.
Parts that do not fit a linear layout can be put in a relative layout. In most applications you will end up with several nested lay-outs.
Finally, are you designing for phone or tablet? For the latter, you may consider using frames, where you have the questions in one frame and other information (buttons, options, settings, login) in another. This creates a much nicer and cleaner overall application (otherwise your screen is filled with the questions only, which is a waste of good screen space).
Check the layout section on the google developer website (via training). I think this is useful for you.

[Library] BobEngine - Easy to use 2D game engine for Android

Hello, XDA!
I have created my own 2D game engine that utilizes OpenGL and sports many features to help make programming 2D games for Android as quick and simple as possible. I created this engine for use in my own projects but then I thought why no make it open-source? I think other people could benefit from this and input from other developers could help fine tune this thing so it's as good as it can be.
So I gave my engine the name "BobEngine" after my online alias and uploaded the first public release called "BobEngine 1.0 Thingama" to GitHub. That was months ago and now I've finished working on the next update: BobEngine 2.0 Shishka.
I've got a post on my website detailing what's new in update: http://www.bobbyloujo.com/2015/01/bobengine-20-shishka-update.html
BobEngine uses a similar structure to GameMaker games so if you've ever used that you may be interested in BobEngine. BobEngine uses a specialized BobView to display the content of Rooms. Rooms are collections of GameObjects which each have a graphic and attributes such as x and y positions, width, height, angle, frame, etc... Rooms and GameObjects also have step, newpress, and released events built in. The step event happens each frame, the newpress event happens when a new pointer is touched on the screen, and the released event happens when a pointer is lifted from the screen.
There are many other tools included with BobEngine and the best way to start learning how to use them is have a look at the examples that are included! In the GitHub repository you'll find an Android Studio project called "BobEngine". This project contains the "bobEngine" library module that you'll need to include in your own projects if you want to use BobEngine. Also in the BobEngine project are modules for each of the included examples. Currently there are examples that demonstrate the structure of a BobEngine game, how to use input from the touch screen, and how to manipulate the camera. I'll be creating more examples in the future to show off all the things you can do with this engine!
All the methods and data members in BobEngine are internally documented and the examples include a lot of internal documentation to help you out as well.
I'll keep updating the library with new things as I think of them. If there is anything you think should be added go ahead and post about it in this thread.
Benjamin Blaszczak
a.k.a. Bobby Lou Jo
@Bobbyloujo on Twitter
Edit: Forgot the GitHub link: https://github.com/Bobbyloujo/BobEngine
@Bobbyloujo
Thanks man will try this today and welcome 2 xda :highfive:
Thanks sir...pls give us some game template made from your lib
Great job man. It looks great.
I will try as soon as possible
Sylvain
Thanks man. Will surely try it out. good work.
Awesome, just what I've been looking for. Thanks!
nice work, and thanks for putting your time and effort into it.
Could this be used to recreate "biomenace" for android?
Thanks everyone!
@berlyshells Anything you want to see in particular? I could probably throw together a Flappy Bird clone real quick or something...
@verbuyst It certainly looks doable if you put the time and effort into it.
Bobbyloujo said:
..
Click to expand...
Click to collapse
im not really looking for anything in particular..probably any game source with comments (of the functions/what for is this code etc..) inside the code would be nice haha i just requesting but its you're choice sir im sorry im just a newbie
TIA
A new example has been added to the repository per @berlyshells request. This example is called Jumpy Bug and it is a Flappy Bird clone. It demonstrates what a full game programmed with BobEngine looks like.
Bobbyloujo said:
....
Click to expand...
Click to collapse
thank you very much sir..you are indeed a good hearted person..this is what i really love on xda
While working on my most recent project I made a few changes to BobEngine. The changes have been uploaded to GitHub.
Changes:
The extra functionality provided by BobActivity has been moved to a new class - BobHelper. A BobHelper can be used by any activity. When using a BobHelper, be sure to call its onResume() method from your activity's onResume() method. BobActivity still functions the same way it did before. BobHelper is useful for when you want to use some other kind of activity has your application's main activity but still want the extra functions from BobActivity. For example, if you want to use BaseGameActivity from the BaseGameUtils library for Google Play services.
SplashActivity has been totally changed because, frankly, it sucked before It is now an abstract class. Create your own activity for showing splash screens and extend SplashActivity. Implement the setup() and end() methods. In the setup() method, call addSplash(R.layout.your_splash_layout, time_in_ms) to add a splash screen to show as defined by an xml layout. You can add up to 10 layouts. Add them in the order you want them to show. The end() method is called after the last splash screen has been shown. In the end() method, start an intent for your main activity and then call finish() to close the splash screen activity.
Other small changes.
How many games have made using library? Looks cool)
Thanks..I tried AndEngine and it failed to import on my Android Studio.
Marshal3 said:
How many games have made using library? Looks cool)
Click to expand...
Click to collapse
Uhm... about three. There's Plane Popper, Crazy Taxi Driver, and I just finished Bounce the Beach Ball. Other than that, I've made a few examples that you can find in the repository - including a Flappy Bird clone. Also, I've been working on a platformer.
basil2style said:
Thanks..I tried AndEngine and it failed to import on my Android Studio.
Click to expand...
Click to collapse
Let me know if you need any help with BobEngine!
Hello again, XDA!
I've updated BobEngine again. This update brings the following major additions:
Gamepad support! You can now get input from any standard gamepad using BobEngine. A new example has been added to the Android Studio project that shows and explains how to use this new gamepad support. The example is called controllerexample.
Multiple quads per GameObject. Up until now, a GameObject consisted of a single textured quad (well, two triangles that form a quad). Sometimes it is useful to have many quads grouped together. If you use this, note that all the quads for each GameObject must have the same graphic. This is a very niche feature that I added for a particular purpose but didn't end up using myself. If you'd like an example of what can be done with this, let me know and I'll make one.
Some other miscellaneous stuff has been changed as well. It's been so long since I posted an update that I forget everything I changed! One useful change I made was to the camera features. Rooms now have their own camera values, meaning if you change the camera in one room, then switch to another and change the camera there, then switch back to the first room the camera will be where you left it in the first room.
BobEngine can of course still be found here on GitHub: https://github.com/Bobbyloujo/BobEngine
Here's a video showing off gamepad support: https://youtu.be/vRdaaaJnqGk
As always, if you have any questions feel free to ask. Also, if you've made anything with BobEngine I would love to see it! Whether it's something big or something small I'd love to see how others have used my engine
If you haven't already, please follow me on Twitter. My handle is @Bobbyloujo and I post updates about the games and things I'm working on there pretty frequently. Right now I'm working on something pretty big!
Another new update today!
Changes:
* TextDisplay object added! TextDisplay is a GameObject that can be used to output text! Text can be centered, aligned left or right. A new example has been added to show how this new object can be used.
* A new 'visible' attribute has been added to GameObjects. Setting gameObject.visible to false will cause the object to be hidden so it isn't drawn.
* The getAngle() function in Room.java was broken. It has been fixed so now getAngle() and getAngleBetween() both work properly.
* The getRatioX() and getRatioY() functions sometimes would not work properly on some devices. This has been fixed.
* When using multiple quads per GameObject, the performance has been increased. This was done by collecting vertex data from the quads in a way that does not require the concatenation of many arrays.
As always, the repository can be found here: https://github.com/Bobbyloujo/BobEngine
It'll really help me out if you follow me on Twitter: https://twitter.com/Bobbyloujo
And like my Facebook page: https://www.facebook.com/BobbyLouJo
If you have any questions or would like to report a bug, please leave a message in this thread or PM me on XDA, Twitter, or Facebook.
Have a great week!!
Version 3.0 Bobsled
It's been a while, but in the time since my last update I've added a lot of new things to BobEngine. Since it's such a big update, I'm giving it a new version name: v3.0 Bobsled. Here goes:
RoomCache - In BobView.java you will find a new static class called RoomCache. As the name implies, RoomCache is used for storing and retrieving instances of Rooms. The nice thing about RoomCache is that you can call getRoom(Class roomType) with any class type that inherits Room and the function will return an instance of that room type, even if you haven't manually added a Room of that type to the cache. The function getRoom(...) will search the cache for an instance of roomType and return it if one is found OR it will create a new instance of roomType using reflection and return that. You'll also notice that there is a getRoom(Class roomType, Object... args) function. If you have created a room type that takes parameters other than (BobView view) like a default Room does, you can use this method to pass the required arguments to initialize a new instance of that room type if need be. The cache holds a specified max number of Rooms. When the cache is full and a new Room is added, the oldest Room is removed. You can make your own RoomCaches, but each BobView has it's own cache with an initial size of 3. To access it from your BobView, just call getRoomCache().
Along with RoomCache, BobView has received two new goToRoom overrides: goToRoom(Class roomType) and goToRoom(Class roomType, Object... args) for switching to rooms retrieved from the RoomCache.
Input events (newpress, released) are now handled on the main thread (same thread as step event). Handling game logic on the separate input thread was causing a lot strange glitches in my games when values were being changed when I was not expecting them to be changed. Now, input will be handled on the same thread just before the step event.
For even more convenience and even quicker game development, a new constructor has been added to GameObject: GameObject(Room room). This will automatically assign an instance ID number AND add the object to the room. What typically looked like this before:
Code:
GameObject object = new GameObject(room.nextInstance(), room);
room.addObject(object);
Now looks like this:
Code:
GameObject object = new GameObject(room);
So simple! The old constructor is still there and behaves the same way for those who want it and for backwards compatibility.
Setting GameObject.visible to false will now hide all Quads belonging to that GameObject. This will not change the Quad.visible field for any Quad. Also, similarly to GameObject, Quads are now added to the GameObject when initialized.
Animations can now be played once and looped for a limited number of times. animationFinished() will return true when an animation has finished playing.
Animation class - a new class has been added to GameObject.java. This class can be used to predefine animations with a start frame, end frame, fps, and loop times.
Previously, I was using 3 coordinates for each vertex. I learned it's possible to use only 2 in OpenGL. Since the 3rd vertex is not needed, I changed the code to use only 2 vertices. I'm not sure if this actually caused any performance improvement.
Graphic.Parameters class - A new class in Graphic.java allows you to predefine Graphic parameters to use with GameObject.setGraphic(Graphic.Parameters params). Useful for when you want to switch between graphics on a GameObject often.
A new method in the Graphic class called setDimensions(int width, int height) allows you to set the height and width of the DPI level image you want to use for setGraphic(Graphic g, int x, int y...). Previously, you would have to use setPreciseGraphic(...) if you had different sized images for different DPI levels that have multiple graphics on them.
Set the color intensity of all GameObjects on a specific layer using Room.setLayerColor(int layer, float r, float g, float b, float a).
Graphics management (this is a big one):
The Room, Graphic, and GraphicsHelper classes have been updated to improve and simplify management of graphics for large games. A new GraphicsHelper.cleanUp() method makes it easy to manage graphics. You can choose points in your game to call cleanUp(). When called, Graphics that have not been used recently will be unloaded and removed from the GraphicsHelper. Graphics have a new public field called 'persistent' which when set to true will cause the graphic to remain loaded when cleanUp() is called. All non-persistent Graphics will survive through a set number of cleanUp() calls before they are removed. If a Graphic is removed but then a GameObject tries to use it again, it will automatically be re-added to the GraphicsHelper and reloaded.
You can also manually call:
Graphic.load() to load a graphic after is has been added to the GraphicsHelper.
Graphic.unload() to unload a graphic
Graphic.remove() OR GraphicsHelper.removeGraphic(Graphic g) to unload and remove a Graphic from the GraphicsHelper.
OKAY, I think that's just about everything. I actually had to look through the changes in the GitHub commit to remember all the things I've changed xD There are a few other small changes but I didn't think they were important enough to list. Now I want to ask you guys something:
Is there any interest in a full-blown tutorial series for BobEngine?
I could start with the basics, then explain more advanced features like graphics management. I could also take requests for certain tutorials. I could even cover general game development topics and how to implement them with BobEngine. Doing this would be a lot of work so before I dive in I really want to gauge the level of interest in BobEngine. So far, it's been difficult to tell how many people are interested because I haven't gotten an overwhelming amount of replies here but every once in a while I get a PM or email asking for help. So if you're using BobEngine raise your hand!
And of course: if you've made anything with BobEngine I would love to see it! I've seen a few things and it makes me happy to see you guys using getting some use out of my engine.
Thanks for your time! If you have any questions, just ask. You find any issues with BobEngine, post them here or on GitHub and will fix them. Also don't forget to let me know if you're using BobEngine!
Once again, the repo can be found here: https://github.com/Bobbyloujo/BobEngine
Thanks again,
Ben a.k.a. Bobby Lou Jo
Twitter: https://twitter.com/Bobbyloujo
Facebook: https://www.facebook.com/BobbyLouJo
you are great and i should more from you
I am a new man in the electronic area, and you have developed your own staff, you set a good example for me.
Jackiefire said:
I am a new man in the electronic area, and you have developed your own staff, you set a good example for me.
Click to expand...
Click to collapse
Thanks! Your support means a lot.

Categories

Resources