Archive | Android Development RSS feed for this section

Softway Solutions Launches Award-Winning Medical Mobile App

Recently, Softway Solutions was recognized for the great development of a mobile application at the 14th annual 2012 Web Health Awards.  Out of a pool of more than 600 mobile application entries, Softway Solutions was awarded the Bronze Web Health Award for the work done on the Auscultation Primer medical mobile app.

Designed for mobile devices such as iPhone and Android, the Auscultation Primer app improves the user’s auscultation (the ability to hear sounds from within the body) of various sounds made by the heart. The app was developed for the Texas Heart Institute in collaboration with Dr. James Wilson and Coordinator Arnulfo Martinez of the Heart Sounds Laboratory.

Developed primarily for health professionals like doctors, nurses and surgeons, this portable tool is also useful for medical students and all types of clinicians who want to improve their powers of auscultation.

Another great feature this app has is the inclusion of 10 live recordings from a range of real medical care patients. The Auscultation Primer app provides actual examples of common murmurs and other sounds made by the human heart. Each video recording provides clear samples of easily-recognizable audio, crystal clear phonocardiograms and detailed EKG tracings for accurate timing. To help enhance the learning curve, our developers included comprehensive and descriptive textual entries to walk each user through the app’s different options. 

Our Softway Solutions developers who helped to create this award-winning app and who were apart of the development team are proud of their accomplishments. As a company, we are excited about the ongoing and growing role of supporting the nation’s healthcare industry with mobile applications.

By receiving this award, it helps add recognition and honor to Softway Solutions’ already unblemished reputation as one of America’s leading digital resource companies. Congratulations to our mobile application development team on their success!

You can download the app for iPhone Here and for Android Here.

If you are looking for a Medical Mobile App Developer, Feel Free to Contact Us Today!

Read full story Comments { 0 }

Mobile Application Development | What You Need to Know?

According to an In-Stat research study, “about 65 percent of the U.S. population, or over 200 million people, will have a smartphone…..in 2015.” With an increase in use of smart phone devices the mobile market will grow, and tech-savvy business owners will take advantage of this opportunity seeking out mobile application developers. The question we ask is do you know how to select the best mobile application developer? Below are some things to be on the lookout for when seeking mobile application development.

Mobile Application Development Checklist

Source Tools

Open-source frameworks/plugins allow programmers to build applications faster because they have readily available components, which in turn, brings down cost. The downsides of open-source tools are that developers need to update the tools on a regular basis to maintain stability and enhance performance of the mobile, there may be little or no support from the source provider, and although open source is usually free, tools like these have a greater learning curve because there may not be enough documentation. If your application developer is using any open-source tools you need to make sure they have the licenses to be in compliance with the mobile application tools. Here is a link to different types of open-source and free software licenses.

Native Application Development

Find out whether the application being developed for the phone is a native application or a web application. A web based application is usually a mobile website built for a specific platform . Many business owners are tricked into thinking that this kind of mobile application development is a common practice for developing mobile applications when in reality a native application may be best for developing your mobile application. Native applications, on the other hand, are faster and have a better user experience compared to web apps. Native applications are also developed in platform specific programming languages such as Objective C for IOS or Java for Android

Cross Compilers

If you want to use the same mobile application across many platforms, ask the developers if they can use a cross compiler. Cross compilers allow for one code base to be translated into various platforms. This will prevent the developer from having to write the code over and over for each and every specific platform you want your application to be available on. Although cross compilers allow you to save money and time, some features of your app may not be well supported on all platforms like maps and calendar integration. If your application has platform dependent features it is better to avoid cross compilers.

Experience

You want to make sure your developer has experience before developing your mobile application. In addition to having the mobile application developer show you his work, ask for references to call upon to see if the developer was able to deliver what they were seeking for.

Business

Along with asking questions about the developer’s experience, make sure to research the company. How long has the company been in business for? What kind of employees will be doing the work or coding of your mobile application? How soon can they deliver a protoype of the mobile application? Finally, will they be able to help you upload your mobile application onto a certain platform and also market the application?

 

Hiring a mobile application developer may take you into the unknown. Softway Solutions has been developing mobile applications since 2009 and has developed various kinds of mobile applications. If you would like additional information on how we can help you with your mobile application development, contact us at www.softwaysolutions.com or 281.914.4381.

Read full story Comments { 0 }

Why You Need Mobile Applications For Your Business?

According to an In-Stat research study, “about 65 percent of the U.S. population, or over 200 million people, will have a smartphone…..in 2015.” This statement is a reason for businesses to jump start their mobile application(s) identities. With mobile applications, customer engagement and company awareness can increase for any business. Once downloaded, the mobile application will reside as a program on the device and can be accessed from anywhere with ease.

Mobile Applications Increase in Popularity

Mobile applications lend flexibility to daily tasks that can now be conducted in the palm of your hand while on the go. For example, you  are a sales person attending a networking event who uses Salesforce at work. The Salesforce mobile application in a smart phone will allow you to  enter any and all of a lead’s details into your device.  In addition, doing this task upon networking will allow you to enter a lead’s information without having to turn on your laptop and enter the information manually. Upon returning to the office the next day and login into your Salesforce account, you will be able to see the lead’s information entered from the evening before.

Mobile Applications Enhance User Experience

Banks, such as Bank of America and Chase, have mobile applications that reduce costs and enhance their customer’s digital banking experience. Social media websites, such as Facebook and Twitter, use mobile applications to allow users to stay connected and up-to-date with friends while on the go. Calorie counting has been revolutionized by MyFitnessPal’s mobile application which allows you to keep up with your calorie intake and calories burned.

Financial benefits to businesses

There are two different ways for businesses to earn revenue through a mobile application. The first is by charging for each download and the other is selling advertising within the mobile application. Depending on the type of mobile application, the price to download the application can range between $0.99 to $9.99 or higher. Some companies choose to do both but this is not recommended.  Offering an intuitive and user-friendly platform to your current clients will positively affect the bottom line in many ways.

Developing your Mobile Application

Softway Solutions provide is braced with a team of engineers that can help you design and market your mobile application. In addition, we can provide you with statistical reports about your mobile application. Contact Softway Solutions at www.softwaysolutions.com or 281.914.4381.

Read full story Comments { 0 }

Adobe Flash Mobile Development Scrapped in Favor of HTML 5

Adobe, the much heralded pioneers for dynamic content development on our web and mobile devices via their proprietary Flash platform, has officially closed the door on future mobile flash support, instead refocusing their sights on the widely supported HTML5 standard.

It is no secret that Adobe has had its share of battles with Apple, the smartphone giant that has refused to support the mobile Flash plugin for the iPhone, citing less than stellar performance on their ubiquitous device. With the kind of market share that the iPhone has over the smartphone market, and with the near unanimous support of Adobe Flash for web and mobile devices, it was the kind of stalemate that had developers and consumers wondering which titan would topple first. It seems Apple would be the last man standing, and with Adobe finally taking their hat out of the mobile animation ring, HTML 5 has the unique opportunity to become the next contender for worldwide animation support on mobile devices.

The full story:

Adobe has said it will stop developing its Flash plugin for mobile devices. The company intends to focus on HTML 5 for mobile devices and work with Flash “where it can have the most impact for the industry”, Adobe said in a blog post.

Danny Winokur, Adobe’s vice president and general manager of interactive development, wrote: “Over the past two years, we’ve delivered Flash Player for mobile browsers and brought the full expressiveness of the web to many mobile devices. However, HTML5 is now universally supported on major mobile devices, in some cases exclusively.”

Adobe Flash is a multimedia platform that is available as a plug-in for mobile devices to allow them to run videos and play games. Adobe says it will continue to issue bug fixes and security updates but will no longer development the mobile platform.

Apple’s iOS devices – the iPhone, iPad and iPod touch – have never supported Flash. That has been portrayed as a weakness in the system by supporters of Google’s Android OS but it appears that Apple’s will has eventually prevailed.

Mobile Flash was the subject of a row between Apple and Adobe 18 months ago. Adobe claimed that Apple did not allow Flash because the iPhone manufacturer wanted to protect its App Store.

Steve Jobs, Apple’s late CEO, denied that claim in a post on his company’s website. He said Adobe Flash was not an open technology, was unstable and had a negative effect on battery life. He also pointed out that there were alternative technologies for things such as web video. Jobs wrote: “In addition, Flash has not performed well on mobile devices. We have routinely asked Adobe to show us Flash performing well on a mobile device, any mobile device, for a few years now. We have never seen it.”

Read the original story here

So what does this mean for the future of mobile development?

In short, it could mean a lot of things. HTML 5 is widely supported in web and mobile devices, and Adobe has definitely not neglected the language in its own suite of tools (Adobe Edge is their answer to HTML 5 development, allowing animation capabilities very similar to Flash). With the largest mobile platform for proprietary animation soon to be stepping out of the ring, we may be seeing much more HTML 5 based development in favor of mobile development for Flash. Of course, with the wide support of Flash on the web, Flash still has a happy home with the non-mobile web as its stronghold. It seems though that the mobile world will have to start looking elsewhere for a universally accepted mobile animation platform.

The Bottom Line

As a developer, we know compatibility plays a critical role in the development choices made by us and our clients. When the giants like Adobe and Apple make massive decisions, it affects the way we as developers think, create, and approach the creation of apps, animations, and websites – which ultimately affects the way that clients and the rest of the world will perceive the internet. More than anything, the ever changing development world requires us to be nimble and ready to adapt as the world changes to adopt these newer technologies. The goal though remains the same – to create an immersive world that is accessible, relevant, and meaningful for the end-user. The platforms may change, but the demand for dynamic content is only increasing. As HTML 5 steps up as the next contender for a widely supported mobile animation solution, we will have to wait and see if there is real staying power in its animation capabilities, or if it will end up as just another flash in the pan.

For more information about how Flash Animation or HTML 5 can enhance your business online, feel free to contact us.

Read full story Comments { 0 }

Verizon, Motorola, Google DROID Vs iPhone

I was watching this Ad the other day about an iPhone killer that Google, Motorolla and Verizon are pitcing. Check out the iDon’t Ad

In my opinion, it will be very difficult to see an iPhone killer until a single company controls the OS and the Hardware, just like Apple does. We can help you develop mobile applications and game development for both iPhone and Android, so it would be a welcome addition.

check out more of the discussion on this subject here
Follow up answer on the discussion about Microsoft defying my logic below.

If that’s the case the same formula should have applied to windows mobile, but it has a market share of 0.04% according to marketshare.hitslink.com. This will take me off on a tangent, but Microsoft was smart in taking advantage of the market and provided their OS bundled with value PC’s, but that’s what these PC’s are, cheap. Do you think Mac and Linux, as they are today, would have survived, if a need did not exist. There was a requirement for a better operating system with fewer bugs and viruses. If you have not tried it yet, try running the Windows OS on a Mac, you will see the performance difference. Don’t get me wrong I am not a Apple fan boy in any way, in fact, I hate the fact that you have to purchase every small thing that you have come to expect free with a PC. I admit that I am running a windows OS because certain programs only run on windows, but the topic was iPhone killers. Droid although good, is no were near killing the iPhone. Microsoft might be closer to something good with Zune once they decide to push the device in the right direction.

Read full story Comments { 0 }

OpenGL Texture from a non-local source on Android.

I started working on the Android platform a few days ago and there were things I liked already. Few clients from around Houston approached Softway Solutions to get some mobile application development done on the IPhone and Android. The application had some 3D aspects. At Softway Solutions we had started prototyping on Android since the early days. So I started working on a prototype that utilizes the OpenGL ES framework. This example is built upon the OpenGL ES samples that come with the Android SDK. So let us begin.

First we start off by creating an opengl texture class. Lets call it GLTexture.java.

[code lang="java"]

public class GLTexture implements ITexture {
/*
* OpenGL ES context for drawing etc....
*/
GL10 mGl;
/*
* ID of the texture created. Its used for OpenGL internal texture binding function.
*/
int mTextureID;
/*
* Name of the texture to identify it if its is placed in a texture cache.
* Helps in reusing a certain texture.
*/
String mName;
/*
* Constructor for creating the texture. Parameters are the Opengl handle, Application Context
* and Android resource id. This is if we want to load the texture from an android application resource.
*/

public GLTexture(GL10 gl, Context context, int resource){
mGl = gl;
surfaceCreated(context, resource);
}
/*
* Constructor for creating the texture. Parameters are the Opengl handle, Application Context
* and the URl of the texture. This is if we want to load the texture from a url on the internet.
*/

public GLTexture(GL10 gl, Context context, String url){
mGl = gl;
createTextureFromUrl(context, url);
}
/*
* Constructor for creating the texture. Parameters are the Opengl handle, Application Context
* and the Bitmap Object. This is if we want to load the texture from an already exisiting bitmap object.
*/

public GLTexture(GL10 gl, Context context, Bitmap bmp) {
setGLParams();
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0);

}

[/code]

Then the next step is to add the necessary functions to create the Opengl Texture

 

/*
* This functions sets the basic state for an opengl texture to be created.
*/
private void setGLParams() {
/*
* By default, OpenGL enables features that improve quality
* but reduce performance. One might want to tweak that
* especially on software renderer.
*/
mGl.glDisable(GL10.GL_DITHER);

/*
* Some one-time OpenGL initialization can be made here
* probably based on features of this particular context
*/
mGl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
GL10.GL_FASTEST);

mGl.glClearColor(.5f, .5f, .5f, 1);
mGl.glShadeModel(GL10.GL_SMOOTH);
mGl.glEnable(GL10.GL_DEPTH_TEST);
mGl.glEnable(GL10.GL_TEXTURE_2D);

/*
* Create our texture. This has to be done each time the
* surface is created.
*/
int[] textures = new int[1];

mGl.glGenTextures(1, textures, 0);

mTextureID = textures[0];

mGl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID);
mGl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_NEAREST);
mGl.glTexParameterf(GL10.GL_TEXTURE_2D,
GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);

mGl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
GL10.GL_CLAMP_TO_EDGE);
mGl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
GL10.GL_CLAMP_TO_EDGE);

mGl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE,
GL10.GL_REPLACE);
}

 

This sets up the OpenGL pipeline to create and bind the texture. Next step would be to have a function which allows us to load the texture data from different sources. Lets first get the texture loaded from a resource.

 

/*
* This function is called to create a texture from a resource file.
*/

protected void surfaceCreated(Context context, int resource) {
// Sets the OpenGL parameteres

setGLParams();

// Fetches the input stream from the context to get the data from the packed Android resources

InputStream is = context.getResources()
.openRawResource(resource);

Bitmap bitmap;
try {

// Decodes the bitmap stream to give us the final bitmap data. This function also takes care of the filetype for the resource

bitmap = BitmapFactory.decodeStream(is);
} finally {
try {
is.close();
} catch(IOException e) {
// Ignore.
}
}
// Creates the acutal texture.

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

// Free the memory used by the bitmap object. The texture data has now been passed to the opengl pipeline.

bitmap.recycle();
}

 

Now we shall create a texture from an internet resource i.e. a texture from a URL.

 

/*
* This function takes the context and the string address of the texture.
*/

protected void createTextureFromUrl(Context context, String address) {
// Sets the OpenGL parameteres

setGLParams();
Bitmap bitmap = null;
try{
// Creates the URL object to load up the data from the internet.

URL url = new URL(address);
try{

// This function gets the content of the URL. We typecast it to an InputStream Object as that is what will be returned. If the file is missing it will throw an exception which will be caught in the try catch block.

InputStream is = (InputStream)url.getContent();
// Decodes the bitmap stream to give us the final bitmap data. This function also takes care of the filetype for the resource

bitmap = BitmapFactory.decodeStream(is);

}catch(IOException e){
Log.e(“Bitmap streaming failed”, “failed”);
}
}
catch(MalformedURLException e) {
Log.e(“malformed url”, “failed”);
}

// Create the texture

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
// Clean up and release memory used by bitmap object.

bitmap.recycle();
}

 

Now we shall implement the texture setting function which will apply this texture tothe primitive objects we want to draw.

[code lang="java"]

/*
* This function sets the texture just before drawing a set of primitives.
* This helps in applying textures to certain objects only.
*/

public void setTexture(){
mGl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID);
mGl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

mGl.glActiveTexture(GL10.GL_TEXTURE0);
mGl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureID);
mGl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
GL10.GL_REPEAT);
mGl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
GL10.GL_REPEAT);
}

[/code]

Now that our class is created. Lets test it in our test bed application derived from the API Demos from the Android SDK.

public class GLTestBed implements GLSurfaceView.Renderer{

private Context mContext;
private Triangle mTriangle;

// We declare our texture object.

private GLTexture mTexture;

Now we instantiate the texture object in the callback for the OpenGL intialization gets completed.

public void surfaceCreated(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
// We create the texture and pass it the url address of the image we want as the texture.

mTexture = new GLTexture(gl, mContext, “http://farm1.static.flickr.com/168/373377433_da7194d612.jpg?v=0″);
mTriangle = new Triangle();
}

We set the texture and call the draw method of our primitive.

public void drawFrame(GL10 gl) {
/*
* By default, OpenGL enables features that improve quality
* but reduce performance. One might want to tweak that
* especially on software renderer.
*/
gl.glDisable(GL10.GL_DITHER);

gl.glTexEnvx(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE,
GL10.GL_MODULATE);

/*
* Usually, the first thing one might want to do is to clear
* the screen. The most efficient way of doing this is to use
* glClear().
*/

gl.glClear(GL10.GL_COLOR_BUFFER_BIT GL10.GL_DEPTH_BUFFER_BIT);

/*
* Now we’re ready to draw some 3D objects
*/
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluPerspective(gl, 90.0f, 0.7f, -5, 100);

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
// Set the current texture unit to the texture we want to apply
mTexture.setTexture();

// Do some object animation
long upTime = SystemClock.uptimeMillis();

long time = upTime% 4000L;
float angle = 0.090f * ((int) time);

gl.glRotatef(angle, 0, 1.0f, 1.0f);

// Draw the primitive with the texture.

mTriangle.draw(gl);

}

You can find the code for this tutorial here.

Read full story Comments { 0 }