Sunday, April 27, 2014

Rant against Google Plus !

Disclaimer :

First, this post is obvioulsy not about Android, but rather on google+.

Next, Google Plus is my social network of choice.
I hardly read Facebook, and I'm a passive user of twitter (ie I read there, but never write any message ).

So I'm essentially using Google Plus. I almost exclusively have a quasi professional use : as a vector to read and participate to news I'm interested in, techno geek things : game development, development in general, Android, web development, ...



The promise of Google plus :

I was interested in G+ for one main reason : the circles.
I always wanted to behave differently depending on the people I'm with.
I won't have the same conversations with work friends, school friends, family, hobbies friends... 
So I don't want to share the same things with all these different people.
That's why I was so interested in G+, the possibity to have different circles, and to choose who I want to share my messages with.


Reality Check :

I've been using G+ for 2 years, and I'm not really using it as I wanted.
Actually, as I already said, I'm using it exclusively for technology things.
I don't use it at all for my family, for my friends, for anything else...

Even worst : I advice my friends and family NOT to follow me !


Why ?
Because, I'm quite active on G+, posting more than one post a day, on technology subjects, and publicly shared.
If my friends and family followed me, they would be spammed with post on C++, Unity3D, and Android that they would obvioulsy not understand, and not be interested in.
So in order to protect them, I prefer them not to follow me !

Actually, G+ is useful only if you only have one point of interest, if you only want to show one face to your audience.

Where is the promise ? You can read on G+ website :
"Circles make it easy to share the right things with the right people, just like in real life".
This just becomes untrue once you start sharing publicly.


Workarounds :

I'm obviously not the only one with this issue, so how are people dealing with this problem :

Just posting on several subjects, and let your audience read only what they interested in :
For instance I'm following Romain Guy, a former Android developer. But half of his posts are about his passion for photography. Hopefully, he is not spamming with messages, so it's okay ( and he posts great photos :) ), but that's not what I was interested in in the first time.
It's surely not a good solution if you post a lot, and care about your audience.

Posting in private :
That's a possibility that a lot of people are using : when people connect to your profile, ask them what they are interested in, put them in the associated circle(s), and only post in private for specific circles.
The issue here is that privately shared post can't be reshared and they can be read by people that are not in your circle. 
So it lowers your visibility on G+, and creates some artifical barriers in the information diffusion.

Having several accounts :
One can create an account for techno things, one account for family, one account for friends.
But it sounds like a painful thing to keep on changing account every now and then, as our google account is now central in our web experience ( as we're using Chrome / gmail / G+ / Android Phones / ... )

And I think it's forbidden by Google Term of use.


Solutions ?

I'm not here to explain google guys how to do their jobs, and I do completely understand it's not an easy problem.
To be efficient, G+ should be as accessible as possible, and I'm sure any solution would add complexity.

But I feel like something like "public circles" should be possible. 
Current circles are a perfectly good solution, but they only work for private posts.
So why not create some public circles, and let your audience choose which public circles they want to subscribe to ?


I'm sure Google have a lot of talented UX specialists that can come with a better solution, my point is still that I can't use G+ as much as I would like to.
As G+ is becoming more and more important for Google and for the user experience, it may be important to find a solution for this problem.




 ( Also Posted on G+ )

Sunday, August 12, 2012

Android Activity Wizard : please let me create a simple activity !

Today, I wanted to create a new activity in my next application...

Nothing really strange for now...

So I tried the new Activity wizard to create a very simple activity ( it's just to play a video, so I don't even want an action bar ) :

Then I choose not to use any navigation option :



And Taadaaa !!
It just failed :


Note that I've installed the latest support library version ( 9 ), and restarted Eclipse :

But no, it won't let me create a new activity :(

It's no big deal as I can still create it manually, but I was expecting more support from this wizard :)

Saturday, June 23, 2012

What's wrong with Search in Google Play

What's wrong with the search in Google Play ?

Yesterday, I was looking for something in my sliding tile puzzle called 'Nature Puzzle'.
So I opened Google Play website, and started with a search for 'Nature Puzzle'.

Here is the result :












We have :
* Photo Puzzle Game, NumberPuzzle,
* Nature Puzzles,
* Nature Puzzle,
* Natural Seasons,
* Zoo and Nature Puzzle 2 in 1
* kids Puzzle:Animal

and my game is not listed !

What I don't understand is that I gave the exact name, and I didn't find it !
I looked at the last app (kids Puzzle Animal ) more closely, and there is only 1 occurence of 'natural' in the description.
And the application called 'Nature Puzzle' ( so with the exact same name as mine ), it has the same rating, and less downloads.

Note that
* I'm not complaining here that my application does not have enough visibility : I only published it as a proof of concept of Html5 android applications
* I'm not asking the description of the search algorithms in the Google Play Store !

I'm just amazed that, from a customer point of view, giving the exact name of an application does not bring this application to the top !


Actually, if I specify that I want to search only in Android apps, then my game appears at the 7th rank :


















I even discovered another application named 'Nature Puzzle' ( it now sounds like a very common name ), that is even more badly ranked than mine !


Am I the only one to found it strange ?
Do you feel like there are some reasons, for the customer, not to put the application with the exact name first in the search results ?
Do you understand how the ranking is done ?

Sunday, May 13, 2012

Ghost Recon Future Soldier

It's been a long time since my last update on this blog.

Actually, my Android's developments are only hobby projects. My real job is working on console video games.
 And we've just finished Ghost Recon Future Soldier !
I was very busy finishing the game, so I couldn't really post any more.




But the game is now done, I am really proud of it, the whole team has done an amazing job, so I will now be able to return to more Android developments !

During this time, I could port my 'Word Prospector' game on the Blackberry Playbook, and I started a new project.
More on all this later :)
Now I just want to enjoy the Ghost Recon Future Soldier launch.




Monday, August 8, 2011

Orientation for both phones and tablets

Tablets are now a new component to take into account when programming applications on Android.
And it brings issues with your application orientation...

My game Word Prospector was meant to be played in portrait mode on a phone.
But on tablets, I want it to be played in landscape ( as it feels more natural for tablets ).

But how to achieve that ?

Activity orientation is fixed in the manifest, and you can't have different manifests for different screen configurations.

So how to manage that ?
I found three different ways...

First solution : different apk for different screen configurations

Now that the Android market gives us support for multiple apk, ( see here ), you can use it just to have some differences in the manifest.
So you can have the very same application and only have different orientations in the manifest, and let the market make the work for you.

But having several apk is painful for developers : it's a lot of work to develop, and to maintain.
So I would  not recommend this solution.

Second Solution : have some activity code to manage the orientation

You can impose the orientation of your activity in the onCreate method of the activity, with the setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_XXX ) function.

So you can have some code like this :
if ( isXLargeScreen() )
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

With this code, when there is an orientation change, the activity is destroyed, then re created.
To avoid this destruction / recreation step, that would break the smoothness of the user experience, you have to disconnect the destruction of the activity mechanism.
So you have to add a
android:configChanges="keyboardHidden|orientation"
parameter in the activity declaration in the manifest, and add an empty onConfigurationChanged method.

Now you can even be more flexible.
If you want one configuration ( for instance the tablet one ) to handle both orientation, and the other ( the smartphone ) to handle only one orientation, you can do it :

In the OnCreate method, impose the orientation only for the smartphone :
if ( ! isXLargeScreen() )
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Then in the onConfigurationChanged, you have to recreate the Activity only when on tablet. And in this case, you have to save the activty state, and restore it, as the classic destruction / creation of the activity is deactivated :

    public void onConfigurationChanged (Configuration newConfig)
    {
        //Log.d("tag", "config changed");
        super.onConfigurationChanged(newConfig);

        if ( ! isXLargeScreen() )
            return;
      
        // CODE FOR ROTATION
        // FOR BIGSCREENS :
        SaveActivityState();
        setContentView( R.layout.MyActivity );
        RestoreActivityState();
    }

Third solution : let's get back to the manifest...

The manifest really is the tool Android developers gave us to handle the orientation...
So my last ( and prefered ) solution is to have two different activities, with different orientation capacities :

        <activity     android:name="LetterGame"
                    android:screenOrientation="portrait"
                    android:configChanges="keyboardHidden|orientation"
                      android:label="@string/app_name">
        </activity>
        <activity     android:name="LetterGameLandscape"
                    android:configChanges="keyboardHidden|orientation"
                    android:screenOrientation="landscape"
                      android:label="@string/app_name">
        </activity>


and to create a MyActivityLandscape class, that just do ... nothing !
It just inherits from MyActivity :

package com.alocaly.LetterGame;

public class MyActivityLandscape extends MyActivity
{
}

Then you just have to choose what activity to launch in the caller activity :

Intent i;
if ( isXLargeScreen() )
    i = new Intent(MainMenu.this, MyActivityLandscape.class);
else
    i = new Intent(MainMenu.this, MyActivity.class);
startActivity( i );

And that's it !!
The onConfigurationChanged function should still be empty, or you can specialize it for your second activity.

Do you see another technique to handle different orientations with different devices ?


And my turn to ask a question :
How can we easily implement an isXLargeScreen method ? ( my current implementation is something I'm really proud of :) )