Showing posts with label Sivart Technology. Show all posts
Showing posts with label Sivart Technology. Show all posts

Thursday, September 11, 2014

Developing a Simple Android Wear Application: Part 1

This post will walk through the steps involved in creating a simple Android Wear application. I will be using the Balloon Pop Android app as the code example.

In order to get started you need to have already completed the following steps:
  1. Download the Android SDK
  2. Configure a Wearable device or Emulator
  3. Install the latest platforms and tools (either ADT/Gradle)

image 1: main app layout
The application is comprised of two modules: app and wear.

The app portion is primarily required in order to deploy the application on Google Play.  It simply contains one Activity with a basic layout that notifies the user of the fact that it is a wearable application. (see image 1) 

The most important part of the module is that it includes the wear app as a dependency, this way the wearable app will be automatically installed when the main application is installed. You can read more about your packaging options here.

The wear portion contains the activities and game logic that run on the actual wearable device.  It uses the wearable support library in order to take advantage of two UI components: the BoxInsetLayout and the WearableListView.

The BoxInsetLayout is very useful for supporting both rectangular and circular devices because it allows you to define boundaries for its elements.  We use it for the "Addition" and "Subtraction" views so that all three balloons are displayed in the viewable area.


Part 2 will cover the WearableListView provided in the support library. This post was based on the Balloon Pop Android application available on Google Play.

Thursday, September 4, 2014

Balloon Pop for Wear: Our First Wearable App

We recently released our first application for Android Wear: Balloon Pop for Wear.  We are very excited to be among the first developers to make something designed for wearable devices that kids can enjoy playing!

Balloon Pop is a math and counting game that currently features three modes of play: Counting, Addition, and Subtraction.

In the "Counting" mode you are presented with a number of balloons that you have to *POP*, when you get it right you move on.

In the "Addition" mode you are presented with a simple addition math problem. Then you have a choice of 3 possible answers. *POP* the balloon to see if you are right.

In the "Subtraction" mode you are presented with a simple subtraction math problem. Then you have a choice of 3 possible answers. *POP* the balloon to see if you are right.

Each mode has nice graphics and vibration features to reinforce when your child gets the answers right!

This game is **AD-FREE**, so please give it a try and leave us some feedback. We are interested in knowing what other modes you would like to see in the future.

Tuesday, February 11, 2014

Budding Baby Promo Video Created

We recently created a promo video for Budding Baby.  It highlights the different features of the application and was done using iMovie.  Enjoy!


Tuesday, December 24, 2013

Google's AdMob Refunded Several Payments


Over the past few days we have had some weird experiences with Google's AdMob.  They refunded several hundred dollars worth of payments that we made for marketing campaigns; and then today they reversed some of those same payments.  The only thing I could find online about this issue was in a forum:

http://forums.makingmoneywithandroid.com/advertising-networks/4032-admob-refunded-all-my-payments.html

Has anyone else had this same issue?  I can't find any contact information for them either.  Sounds like a major screw up to me :-(

Monday, December 2, 2013

Sivart Technology's Word Crank is Approved for Google Play for Education

We were recently notified by Google, that our word game, Word Crank, has successfully passed review and is approved for inclusion in Google Play for Education!

What is Google Play for Education?  "Google Play for Education is a destination where schools can find great, teacher-approved, educational apps and videos on Play Store. Teachers can filter content by subject matter, grade and other criteria." -- Google

We are so excited to have this opportunity and look forward to seeing what results!

Wednesday, July 31, 2013

Google Play Games App Overview


Last Wednesday, Google released the Google Play Games App.  According to Google:  "[it's] is the easiest way for you to discover new games, track achievements and scores, and play with friends around the world."

What I really enjoy about the app is the ability to easily see all of the games that I currently have installed that include the Game Play Services.  Previously you basically had to just look at the developer's release notes to find out if they had incorporated Game Services.

Furthermore, the release of this app is definitely an opportunity for developers who may have been sitting on the fence on whether they should give the Game Services a try.  You essentially get free exposure for your game by integrating with Google's service.  This could also really drive engagement, as each game the user plays is displayed prominently with a badge showing the current number of achievements they have won.

The interface is very simple and clean.  You have several pathways to discovering new games and new people for your Google+ circles.  Have you downloaded the new Google Play Games app yet?  What are your first impressions? Leave comments below.

Wednesday, June 19, 2013

[Android Tips]: Play Store 'staged rollouts' with Google Analytics

Recently the Google Play Store has added the ability for developers to release a new version of their application's apk progressively by means of staged rollouts.  According to Google this allows you to "get feedback on your new app or app update early in its development and make sure your users are happy with the results."  With the release of the latest version of Word Crank, our flagship game, we decided to take advantage of this new feature.

Staged Rollouts


We released version 1.5.0 of our application to 20% of users initially and then monitored the results in Google Analytics.  In order to distinguish the engagement of the users on the latest version of the app from the others, we created two new custom segments in our primary Dashboard view.  The first segment included all users with version 1.5.0 of the application and the other segment included all other versions of the application.

Custom Segments

 

Once these segments were created we monitored the statistics for a few days and then gradually increased the percentage of rollout to 100%.  This is an extremely useful tool in making sure your new release increases user engagement and the desired traffic goals of your application.

Have you tried staged rollouts?  Leave a comment below.

Monday, June 10, 2013

[Android Tips]: Getting users to +1 your app

In order to improve your application's ranking in the Google Play store, you should get users to +1 your app.  You can do this using GooglePlayServices and the PlusOneButton Android UI element.  Here is a simple layout file that includes the plus one button:

[code]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dip"
android:background="@android:color/black" >

<com.google.android.gms.plus.PlusOneButton
xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
android:id="@+id/plus_one_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
plus:size="tall"
plus:annotation="inline" />

</LinearLayout>
[/code]

It creates the following User Interface Component:
google_plus_button_layout

 

 

Then in your MainActivity's onResume method you can check to see if the layout is visible and then initialize the button:

[code]
@Override
protected void onResume() {
super.onResume();

if (plusLayout.getVisibility() == View.VISIBLE) {
// Refresh the state of the +1 button each time the activity receives focus.
mPlusOneButton.initialize(mPlusClient, APP_URL, PLUS_ONE_REQUEST_CODE);
}

}

[/code]

 

The APP_URL is the link to your app on the Google Play Store

The PLUS_ONE_REQUEST_CODE is any integer value >= 0

Building on the AppRater code base, you can modify it to set a flag when you want to show the plus_button_layout to the user, similar to the following:

[code]

public class AppRater {
private final static int DAYS_UNTIL_PROMPT = 1;
private final static int LAUNCHES_UNTIL_PROMPT = 4;

public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences(PreferenceConstants.PREFERENCE_NAME, Activity.MODE_PRIVATE);
if (prefs.getBoolean(PreferenceConstants.PREFERENCE_SHOW_PLUS, false)) { return ; }

SharedPreferences.Editor editor = prefs.edit();

// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);

// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}

// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
editor.putBoolean(PreferenceConstants.PREFERENCE_SHOW_PLUS, true);
editor.commit();
return ;
}
}

editor.commit();
}

}

[/code]



*** Download our first game: Word Crank today for free: Available on iOS and Android***

Saturday, May 4, 2013

[Android Tips]: Uploading Images to a Remote Web Service

upload

In order to upload images to a web service that requires a Multipart request, the below code will create the file part object and include it as part of the MultiPartRequest entity. I store this method in a separate class and call it statically from within an AsyncTask.  This type of functionality is particularly useful for when you want to upload a user's profile photo and store it on your remote file system.

The following Apache libraries are required:

  • commons-codec.jar (version used: 1.3)

  • commons-httpclient.jar (version used: 3.0-rc4)

  • commons-logging.jar


[code language="java"]
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.ByteArrayPartSource;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;

static boolean doImageUpload(final byte[] imageData, String fileName) throws Exception {
String responseString = null;

PostMethod method = new PostMethod(<remote url>);
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(100000);

FilePart photo = new FilePart("file-data", new ByteArrayPartSource(fileName, imageData));
photo.setContentType("image/jpeg");
photo.setCharSet(null);

Part[] parts = {photo};
method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams()));
client.executeMethod(method);

responseString = method.getResponseBodyAsString();
method.releaseConnection();

if (responseString.equals(<successful response>)) {
return true;
} else {
return false;
}
}
[/code]

Have you done this a different way?  Leave a comment below.

*** Download our first game: Word Crank today for free: Available on iOS and Android***

Monday, March 18, 2013

Seems People Like Word Crank

Just a few quotes from some of our players:

[caption id="attachment_348" align="aligncenter" width="620"]user reviews of Word Crank User Reviews of Word Crank[/caption]

Tuesday, January 15, 2013

Creating An Elastic Beanstalk Application with AWS

In experimenting with new technologies and a possible server infrastructure for some of our future products, I came across the Elastic Beanstalk offering of Amazon AWS. Essentially, Elastic Beanstalk takes the guess work out of setting up a Cloud-based application environment.  According to Amazon,
"You simply upload your application, and AWS Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring."

Elastic Beanstalk supports applications developed in Java, PHP, .NET, Python, and Ruby. To that end, I wanted to share through a series of screen shots how simple it is to get an application up and running.

Once you choose the type of application server that you want to use, in this case I chose Tomcat 7, you are presented with the following screen:

AWS Elastic Beanstalk 1

It takes a few minutes for your application stack to be created. I would recommend updating the notification settings to your personal email address.  If your application server becomes unhealthy or there are upcoming events that may affect your RDS instance, etc, you will be notified via email.  Next you just click on "Upload New Version" and fill out some very basic information, choose your war file and Amazon does the rest.

AWS Elastic Beanstalk 2

Within a few minutes you have your very own application deployed in the "Cloud"! For testing purposes I created a simple Hello World application using Spring MVC.

Hello_World_Beanstalk

Have you tried Elastic Beanstalk? Did it work for your needs? Leave comments below.

Monday, October 15, 2012

Why I love the new Google Developer Console

Today Google released the preview of their new Developer Console to everyone.  I love it!  Why you may ask.  Well as someone who checks the statistics and ratings everyday of several applications, it's much easier to read and navigate.  The layout and design of the tables is very clean, allowing one to quickly get an overview of the current state of each application.



The new design allows you to quickly move between the statistics, ratings, app description, and apk uploads.  Previously you had to navigate between tabs and do a lot of extra clicking to get to similar pieces of information.



Yes, the new layout is very refreshing and I look forward to the other features that Google has in store for us developers.  What do you think?  Leave comments/feedback.

Monday, October 8, 2012

Game Development: Using Google Analytics to track user flow

Recently we have begun to take advantage of the flow visualizations available from Google Analytics for analyzing user behavior in Word Crank.



What is a Flow Report?
"Flow Reports in Google Analytics illustrate the paths visitors take through your website...In one graphic, you can see how visitors enter, engage, and exit your site. " -- Google Analytics

One aspect of these diagrams that I especially appreciate is the ability to compare two different time frames and see how the user flow differs.  I really recommend this if you include a new feature in your application and want to see what impact it has on user behavior.

How to Compare Two Dates:

  1. Select Compare to Past

  2. Choose a second date range

  3. Choose similar time periods ( full months or weeks )




Happy flow reporting!

Monday, September 3, 2012

Being Amazon's Free App of the Day: The Results

On Monday, August 27th, 2012, Word Crank Elite was the Free App of the Day in the Amazon App Store.  We were very excited about being given the opportunity and promised to share the results (find out how this opportunity came about, here).  So overall, we feel that the promotion was a success.  We were able to increase our game's visibility in the App Store and received some valuable feedback.

 

Here are a few statistics from the past week which help highlight the impact on our traffic:








Aug. 27 - Sep. 2


Visits: 50,677

Unique Visitors: 14,201

Pageviews: 38,010

Pages / Visit: 0.75

Avg. Visit Duration: 00:11:17

Aug. 19 - Aug. 26


Visits: 1,508

Unique Visitors: 251

Pageviews: 1,169

Pages / Visit: 0.78

Avg. Visit Duration: 00:15:16

Based on the above table you can see that we had a huge influx of traffic; an increase of over 33x. We also saw an increase in the number of downloads of the free version of Word Crank, in the other app stores, Google Play and iOS.

What was unexpected to us was the number of negative comments related to the use of OpenFeint in the game.  On Google Play we have 4.4 stars, but on Amazon with so many people complaining about the use of OpenFeint we have only 2 stars.  That is unfortunate as we thought that OpenFeint was allowing users the ability to compete with friends and gain achievements.  From what we have been able to find online, there really is no basis for such negativity.  However, as OpenFeint was recently bought by GREE we were already considering alternative scoring solutions.

So what were our major takeaways?

  • we should allow users the ability to choose which game level they wanted to start with, 3, 4, or 5 letter words (this will be included in version 1.3.5)

  • we should start the difficulty level at "Bonkers" (this will be included in version 1.3.5)

  • we should move away from use of OpenFeint (TBD)


We will share some additional statistics within the next few weeks, as the impact of these types of promotions can have lasting effects.

Sunday, August 26, 2012

Becoming Amazon's Free App of the Day

Word Crank Elite is Amazon's Free App of the Day for Monday, August 27th, 2012! So how did this come about?  First, we made an awesome game;-), next we received an email from Amazon:
"We noticed your app Word Crank Elite v 1.3.0 and think it is an interesting candidate for our Free App of the Day promotion."

Ok great, so what happens next?  We agreed to the terms as stated in the email and then we waited. We eventually heard from someone on the Free App of the Day (FAOTD) Team, and were notified that our application had passed all testing; however, they wanted us to reconsider how we were integrated with OpenFeint.

Apparently, other apps had received 1-star ratings by having the OpenFeint pop-up as soon as the application was loaded.  In order to work around, this we removed the default configuration and allowed users to choose if they wanted to use OpenFeint when they click the "SCORES" button.  Once that was done, we resubmitted the new version of the application and waited again.

This past Friday we received notice that our game would be featured on Monday, August 27th.  After which I personally ran through my house and kissed everyone!  We are very excited to have been given this opportunity and will report on the results in another week. So stay tuned!

Wednesday, August 8, 2012

Using Twitter Search Results for #babies

Our newest project Budding Baby, includes a tab with Twitter comments from the public that contains this hashtag, #babies. Not surprisingly, when you perform a generic Twitter search about babies almost anything could come back and does.  For instance, I just performed a search using the following:

[code]http://search.twitter.com/search.json?q=%23babies[/code]

Here is one of the many results:
"U will *neva knw until *dere* is a tragedy..eii so old people also cry *lyk* #babies"

Now that's not quite what we were going for, and that tweet really isn't very positive either.  So what can we do?

Twitter to the rescue...the Search API allows you to append an extra parameter to your query to filter out negative tweets. Wonderful!  So if I run the query again, this time using the "smiley face" parameter, I get much happier tweets.

Here is the new search query:

[code]http://search.twitter.com/search.json?q=%23babies%20:)[/code]

Much happier results:
"baby love. :) #babies #cute #love #life #motherhood http://t.co/mnhrqmlL"

Have you worked with the Twitter Search API?  Leave comments below.

Friday, July 13, 2012

This Week @Sivart Tech: July 13, 2012

It's been a while since we've done a "This Week..." post, but we have been very busy recently; especially this week and wanted to share.  Happily we announce the release of our newest application, Budding Baby, which is available for FREE on both the Google Play Store and the Amazon Market!

Budding Baby's Description:
Keep track of your baby's growth and developmental milestones for the first 24 months of their lives. Budding Baby provides a month-by-month list of baby's milestones and fun ideas that you can do to interact with your baby.

Receive a monthly notification to stay up-to-date with what your baby can do now.

Interact with other parents using the Budding Baby Comments feature. Via Twitter you can share ideas of games and activities that you and your baby can enjoy.

Please download it and give it a try! Please leave any comments below, we always welcome feedback.  Thanks.

Wednesday, June 27, 2012

Using the Android Monkey tool

Android comes with a command-line tool (Monkey) that allows you to stress-test your application.  Monkey generates some random user events and will stop and report any errors that it encounters. It is very useful in helping to flesh out some not so obvious bugs that could be lurking in your application.  Below is an example of how we used it to test one of our applications under development.


cmd> adb shell monkey -p com.sivart.buddingbaby -v 200


Results:
:Monkey: seed=0 count=200
:AllowPackage: com.sivart.buddingbaby
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 15.0%
// 3: 25.0%
// 4: 15.0%
// 5: 2.0%
// 6: 2.0%
// 7: 1.0%
// 8: 15.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.sivart.buddingbaby/.SplashScreenActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.sivart.buddingbaby/.SplashScreenActivity } in package com.sivart.buddingbaby
:Sending Pointer ACTION_MOVE x=-4.0 y=2.0
:Sending Pointer ACTION_UP x=0.0 y=0.0
// activityResuming(com.android.launcher)
// Rejecting resume of package com.android.launcher
:Sending Pointer ACTION_DOWN x=47.0 y=496.0
:Sending Pointer ACTION_UP x=29.0 y=503.0
:Sending Pointer ACTION_DOWN x=255.0 y=143.0
:Sending Pointer ACTION_UP x=255.0 y=143.0
:Sending Pointer ACTION_DOWN x=295.0 y=659.0
:Sending Pointer ACTION_UP x=290.0 y=649.0
:Sending Pointer ACTION_MOVE x=-5.0 y=3.0
:Sending Pointer ACTION_MOVE x=0.0 y=-5.0
// Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] cmp=com.android.launcher/com.android.launcher2.Launcher } in package com.android.launcher
:Sending Pointer ACTION_DOWN x=74.0 y=803.0
:Sending Pointer ACTION_UP x=74.0 y=803.0
:Sending Pointer ACTION_MOVE x=3.0 y=-2.0
:Sending Pointer ACTION_UP x=0.0 y=0.0
:Sending Pointer ACTION_MOVE x=-4.0 y=2.0
//[calendar_time:2012-06-22 22:19:07.777 system_uptime:307227]
// Sending event #100
:Sending Pointer ACTION_MOVE x=4.0 y=2.0
:Sending Pointer ACTION_DOWN x=309.0 y=694.0
:Sending Pointer ACTION_UP x=322.0 y=694.0
:Sending Pointer ACTION_MOVE x=0.0 y=-1.0
:Sending Pointer ACTION_DOWN x=294.0 y=319.0
:Sending Pointer ACTION_UP x=294.0 y=319.0
:Sending Pointer ACTION_DOWN x=118.0 y=497.0
:Sending Pointer ACTION_UP x=119.0 y=493.0
:Sending Pointer ACTION_DOWN x=137.0 y=284.0
:Sending Pointer ACTION_UP x=124.0 y=295.0
:Sending Pointer ACTION_DOWN x=258.0 y=403.0
// Rejecting start of Intent { act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity } in package android
:Sending Pointer ACTION_UP x=273.0 y=403.0
:Sending Pointer ACTION_MOVE x=-5.0 y=-5.0
// Rejecting start of Intent { act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity } in package android
Events injected: 200
Dropped: keys=0 pointers=0 trackballs=0 flips=0
## Network stats: elapsed time=6268ms (6268ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished


Have you used Monkey successfully?  Leave a comment below to share your results.

Sunday, April 22, 2012

Adding a Application Rating Dialog to your Android Game

UPDATE: Also get users to recommend your app via Google+

In order to increase the number of engaged users who were rating the Android version of Word Crank, we used a small piece of code from Android Snippets that shows a dialog to the user after a number of predefined uses to rate your Application. What were the results?

There were 0.2 App Ratings/day previous to adding the App Rater Dialog, after adding the App Rater dialog we went to 0.33 App Ratings/day.  That is equivalent to a 65% increase in user app ratings by making such a small change.  We felt that this was an important change as user ratings can help increase your placement in the Android Market.  Also, we were hoping to get more positive ratings as the dialog only appears after a user has played the game at least 3 times.

So why not give it a try in your game?  Let us know your results in the comments below.

Monday, March 5, 2012

Android Market Publisher Statistics Gets an Update

Last Thursday when logging into my Publisher account on the Android Market, I was pleasantly surprised to find out that Google had updated the available statistics.  Previously, the available data was very limited; focusing primarily on Active Device Installs.

The new statistics page now exposes the number of daily uninstalls, active installs, and user installs.  It also provides a comparison of your application's numbers versus other apps in your same category.  This additional information was very useful in seeing how Word Crank stacked up to other apps in the Brain and Puzzle category.



Word Crank Daily Installs



Word Crank Daily Installs by Version



Word Crank Installs Compared to Other Brain and Puzzle Apps

Have you found the new format useful?  Leave a comment below.