Monday, February 28, 2011

HTC HD2 Apps: Fim v2.8 Facebook Instant Messenger





Fim stands for Facebook Instant Messenger (formerly known as FacebookIM)



Features:

· Facebook Chat

· Photo / Video Uploads directly from your device

· Integrated m.facebook.com browser

· Status Updates

· Chat Message Notifications

· Facebook New Notification indicator

· Unread Inbox Message Indicator

· AppToDate Support

· All Video Modes Friendly

· Touch Friendly

· No 3rd party registration is needed, this app connected directly to the Facebook website.



What's New in This Release:


· added font size settings

· added number of comments to status lines on friends list

· added native (improved) WM6.5 scroll to integrated browser

· added zoom settings to integrated browser (click on "FIM" icon when browsing)

 

Requirements: Microsoft .NET CF 3.5



More Information about this app can be found here:

http://www.mosko.mobi/



Download This HD2 App Here:






















HD2Apps Facebook page
FileServing

zip file: 1.22MB







Sunday, February 27, 2011

Skype Available On Verizon Vireless Palm Pre 2

Skype Available On Palm Pre 2 http://snapvoip.blogspot.com/
Skype just announced that it's service is available on  the Palm Pre 2 from Verizon Wireless.

To get Skype on your Palm Pre 2 from Verizon Wireless, visit skype.com/m on to find out how to get started.

Heading for GDC

[This post is by Chris Pruett, who writes regularly about games here, and is obviously pretty cranked about this conference. — Tim Bray]

Android will descend in force upon the Game Developers Conference in San Francisco this week; we’re offering a full day packed with sessions covering everything you need to know to build games on Android.

From 10 AM to 5 PM on Tuesday the 1st, North Hall Room 121 will be ground zero for Android Developer Day, with five engineering-focused sessions on everything from compatibility to native audio and graphics. Here's a quick overview; there’s more on the Game Developer Conference site:

  • Building Aggressively Compatible Android Games — Chris Pruett

  • C++ On Android Just Got Better: The New NDK — Daniel Galpin and Ian Ni-Lewis

  • OpenGL ES 2.0 on Android: Building Google Body — Nico Weber

  • Android Native Audio — Glenn Kasten and Jean-Michel Trivi

  • Evading Pirates and Stopping Vampires Using License Server, In App Billing, and AppEngine — Daniel Galpin and Trevor Johns

Our crack team of engineers and advocates spend their nights devising new ways to bring high-end game content to Android, and a full day of sessions just wasn't enough to appease them. So in addition, you can find incisive Android insight in other tracks:

Finally, you can visit us in the Google booth on the GDC Expo floor; stop by, fondle the latest devices, and check out the awesome games that are already running on them. We're foaming at the mouth with excitement about the Game Developers Conference next week, and you should be too.

Hope to see you there!

Nexus S, Nexus One, Manual Updates Available For The Impatients To

Nexus S, Nexus One, Manual Updates http://snapvoip.blogspot.com/
XDA-developers and it's resourceful members have uncovered official updates for Nexus S and Nexus One. The Updates are the same as the OTA Gingerbread (Android 2.3.3) update announced earlier.
So users and developers alike should be happy now as none has to wait for those dastardly OTA updates. There are so many good improvements that comes with this Android 2.3.3. update for Nexus S and Nexus One. One of the notable is the NFC API for developers, now developers can actually do something with these phones capabilities.
One thing is make sure you get the correct ROM, correct version and build number as well. XDA- Developers have plenty of information on the link below. Read it carefully to proceed on getting the upgrades. There is also some modifications and addons to the original ROMs to make them even more exciting.
See you in the Gingerbread land.

Angry Birds Oatmealed!

Angry Birds Oatmealed! http://snapvoip.blogspot.com/Long before Angry Birds came about, we were getting some laughs by spending time reading Oatmeal. We still do, that is why and how we found out that Angry Birds have been Oatmealed!
The best of the angry birds
to the worst of angry birds,
And you can find the ones in between at oatmeal But nothing will beat Angry Birds Brithday cake.

Google Voice, How University Professors Use it.

If you thought how could I get creative with Google Voice and out of ideas, after all those call forwarding, call screening, voicemail transcribing and getting your phone calls to follow you, you are in luck.
There is another soul who really gets creative with Google Voice and able to give some ideas.
Todd Stanfield a professor at Union University in Jackson, manages his classes and students with the aid of Google Voice. Dr. Stanfield interacts with students with combining Google Voice with Google Docs and GMail and even draw lines between his professional and private life with it. Follow the link, to learn what he does and to get some inspiration, if needed.
Google Voice Blog: Google Voice & the Snowpocalypse

Saturday, February 26, 2011

Limited Gold Edition Motorola XOOM™ Sweepstakes By Motorola!


Follow @Motorola and RT for a Limited Gold Edition Motorola XOOM http://snapvoip.blogspot.com/

Limited Gold Edition Motorola XOOM™ Sweepstakes
OFFICIAL RULES
NO PURCHASE OR PAYMENT NECESSARY TO ENTER OR WIN. MAKING A PURCHASE OR PAYMENT WILL NOT INCREASE YOUR CHANCE OF WINNING. VOID WHERE PROHIBITED.
THE FOLLOWING SWEEPSTAKES IS INTENDED FOR PLAY IN THE UNITED STATES ONLY AND SHALL ONLY BE CONSTRUED AND EVALUATED ACCORDING TO UNITED STATES LAW. DO NOT ENTER THIS SWEEPSTAKES IF YOU ARE NOT LOCATED IN THE UNITED STATES.
Entry into the Limited Gold Edition Motorola XOOM™ Sweepstakes (“Sweepstakes”) constitutes your acceptance of these Official Rules.
DATES: Sweepstakes will take place starting at 1:00 pm Eastern Time (“ET”) on 2/23/11 and end at 11:59 pm ET on 2/28/11 (“Sweepstakes Period”).
WHO MAY ENTER: Open to all legal residents of the 50 United States and the District of Columbia, age 18 and over. Individuals employed by Motorola Mobility, Inc. (“Sponsor”), Weber Shandwick and their respective parents, affiliate companies, subsidiaries, advertising and promotion agencies, and judges (collectively “Sweepstakes Parties”), Twitter and members of their immediate family (parent, child, spouse, sibling and their respective spouses, regardless of where they reside) or persons living in the same household, whether or not related, are not eligible to enter or win. The Sweepstakes is in no way sponsored, endorsed or administered by, or associated with, Twitter.
HOW TO ENTER: To enter the Sweepstakes, during the Sweepstakes Period, re-tweet (“RT”) the specified tweets sent from the Motorola Twitter account (@), located at http://twitter.com/motorola in their entirety, including the hashtag #motoxoom. One (1) re-tweet shall be equal to one (1) entry.

The complete rules here at Tweetpic

Google Voice without Google Number, your existing number

Google Voice has made it even easier to use by allowing your existing number to be your Google Number, Google Voice announced today.
As we have already told many of you, Google Voice and Google Number have made our lives and communications much easier to handle. We are able to to do call recording, call screening, getting text messages and even have transcribed Google voicemail messages as email.
So either way, with a Google Number or your own number, you will have ability to use many of the features that Google Voice offers, like the Google Voicemail.
There are many ways you can get an Google Voice account, one is to request an invite directly from Google or someone who already has a Google Voice account.
You can see how Google Voicemail makes life easier for many Google Voice users.

Official Google Blog: Use Google Voice with your existing number

Verizon On iPhone, We Were Made For Each Other! iPhone LTE Will Be Even Better

Verizon On iPhone http://snapvoip.blogspot.com/
Verizon Wireless CEO Dan Mead is very pleased about the iPhone sales and the short lines in stores were result of staggered sales maneuver Verizon pun in place to avoid any unpleasant customer experiences, acquiring an iPhone. 
iPhone was first offered by Verizon as  pre-orders of the phone to existing customers on Feb. 3, and then began selling it in stores one week later. Mr. Mead said the staggered the launch of the Apple Inc. device in phases so that customers would have a smooth purchasing experience. "It was a conscious decision to spread the launch over three phases," said Mr. Mead.

According to Mr. Mead more than 60% of iPhones were sold online, which translated into short or no lines on launch day "If we had not done online, you would have seen a much different flow in the pictures," Mr. Mead added that his company will double the number of stores that sell  iPhones, going from 4,000 to 8,000.
Among many other things, he also mentioned about iPhone LTE, "You'll see more coming from Apple on LTE, They understand the value proposition of LTE and I feel very confident that they are going to be a part of it."
WSJ

Friday, February 25, 2011

"Sony Vs Hotz" Geohot Raises Money To Defend Against Sony! And Is Interviewed

"Sony Vs Hotz" http://snapvoip.blogspot.com/
iPhone hacker George “Geohot” Hotz is in the middle of a heated lawsuit "Sony Vs Hotz" with Sony. Geohot “jailbroke” the Sony PS3 and circumvented Sony’s DRM. The ramification of his exploit is that Sony is suing Geohot for “encouraging privacy” on their platform. In that case, making PS3 also should be encouraging piracy?
EFF thinks;

"Simply put, Sony claims that it's illegal for users to access their own computers in a way that Sony doesn't like. Moreover, because the CFAA has criminal as well as civil penalties, Sony is actually saying that it's a crime for users to access their own computers in a way that Sony doesn't like."
Once you are at EFF, please also read Related Issues: Coders' Rights ProjectDMCAFree SpeechInnovationTerms Of (Ab)Use
Yes if this continues, one day it might become illegal to upgrade memory in your SONY computer. Buying a computer, having an internet connection also can be constitutes to "Promoting Piracy" if SONYs reasoning holds. But INAL so don't count me on anything, I am just voicing my mind, why I would not buy anything sony, too bad considering all the sony stuff I have (Sony you just lost a sale, I decided to go with Apple 17 Macbook Pro.)
Even Geohot is pretty civil about it, even after the lawsuit broke out he went out and bought A Sony Xperia phone, used I might add, but I will not do that, It is just too tiring to hear and follow Sony's whims. I will find a good racing game on another platform.
Boycott Sony, yes, I don't want moronic tyrant, I'd rather buy from a creative tyrant!:)
Geohot also found a Boycott Sony campaign spawning on the net!. I disconnected my PS3 from the net and the only thing I use it for Playing GT5 and watching Blueray movies in the room. If need updates, I will get it manually.
Also with mounting pressure, Geohot had to resort to ask for help on the net and he did get help, I guess in abig way, his request was the top SONY news on Google
And  Geohot closed the first round of donations because he got what he needed for his defense at the moment;

Thank you so so much for all of your help, things are looking up money wise.
Expect to see a few more lawyers on my responses!
I have enough to cover my legal fees for the time being.
And in the absolute worst case scenario, we don't want Sony getting it :-P

For now, the best thing you can do is spread the word
Let people know how Sony treats customers
Let people know Sony would rather sue than be proactive and try to fix the problem
Let people know about laws like the DMCA which stifle innovation, and don't do anything to fix the problems they were created to solve
Then as things got famous, he got interviewed, I watched it live and for those who missed, here is the video;

Finally I wish all this come to a best resolution for all and hope Sony learns how to do PR.

Thursday, February 24, 2011

The MyGreatFest, The Worlds First iCommunity And Jailbreak Convention

iCommunity And Jailbreak Convention http://snapvoip.blogspot.com/
This news should bring smiles to some and scowls to some. The world's first iHack  Jailbreak convention is coming together!. Even the convention is made more interesting by the venue, The venue will be at The Old Truman Brewery on Brick Lane in London. I can't wait to wipe the froth of warm beers off my lips.(If I ever get there!)

“The MyGreatFest event is set to be the worlds first iCommunity and Jailbreak convention ever held and is the brought to you by the founder, Craig Fox, aka @flawlessfox.  Craig has assembled a dedicated, knowledgeable team from all walks of life who all share the same passion and love of their iDevice(s).
The cynic in you might be thinking, “So this is just a bunch of tech geeks getting together to look at their beloved iPhones”.  Well rest assured, it’s not.  MyGreatFest will teach you how to use your devices and how to get the best out of your iPhone, iPad and iPod touches. The MyGreatFest experience is proudly associated with the thriving iCommunity and will educate users on how to most efficiently use your device whether it be through Jailbreaking or App Usage."

You can find more information on the event and attend. Let us know if you do!

MyGreatFest
The Old Truman Brewery

Google Mobile Search : Google Places : Getting To The Right Place At Right Time.

Living, studying and working in SF bay area has it's peaks. Everything is just a few miles or minutes away from where I live. I use Google Search and Google Maps, extensively as I am a bit clueless with driving directions. You know the people you have to shout "the other left". Yes. Google always get me there and back home.
Sometimes we want to get together and put finishing touches on a project after hashing it out at the office. Or sometimes walk out of the campus library, closer to mid night, looking for a snack.
So we do a search, map the place out and arrive at the destination, only to find it is closed! Who has time to check opening and closing times, when your brains are elsewhere. Now you can avoid those "Oh Man" instances, thanks to Google Places, Google Mobile Search.
Now you can narrow down your local searches to show businesses "Open Now".

Once you are done and in a mind to, you can further dig down by filtering on star ratings, the distance etc.
Another feature, I like is the addition of the photos, it makes it easier for me to locate the place, even if it is on the "other left" side of the road.

Finding the right place when you need it - Official Google Mobile Blog

http://snapvoip.blogspot.com/

5 tips for Mobile Blogging On Blogger With Your Android phone.

The Blogger App for Android announced at the beginning of this month also has the same fine Google support behind it. In addition to the regular support, I came across this post on Google mobile blog providing five specific tips on using the app on an Android device. As you know, I blog a lot and I am on Blogger. Currently my mobile blogging is done on my iPhone but there are big changes looming. I will be ditching the iPhone for an Android phone like Atrix 4G or Nexus S (which is my colleague already enjoy) and I am really waiting for the Motorola XOOM. So I am going to publish all five tips, for you and for me as a note.
1. Attach photos as you compose
Take photos using your phone’s camera and instantly add them to your post while you draft. You can also insert photos from your phone’s gallery, all within the Blogger app.

2. Include your current location
With your phone’s GPS, you can let your readers know where you’re blogging from by selecting your current location, no additional typing needed.

3. Share to Blogger
Share videos, products, photos, links and other interesting things you would like to include in your blog via the share button that’s available in many apps, including Google Maps for mobile, YouTube, and your web browser. After you share an item to your Blogger, it will be inserted into new post that’s automatically created for you so that start can composing right away.

4. Switch across multiple Blogger accounts
If you’re an author of more than one blog, you can easily switch between your different accounts by tapping on the orange arrow next to the title of your blog. That way, you can publish articles for each of your blogs to keep your all of your readers up to date.

5. Keep track of published posts and saved drafts
See what you’ve composed in an easy to read list by tapping the list icon located on the top right-hand corner.
If you have an Android Device, get the app from Android Market scan the QR code below, to consume mobile blogging as you have never done before.


5 tips for using Blogger on your Android phone - Official Google Mobile Blog

Honeycomb Animations And The New Android Animation System.

Android Developer / Engineer Chet Haase has posted an article covering Honeycomb's new animation system, a set of APIs in a new package, android.animation.
The new system is said to bring more functionality to Androids animation like extending the animation beyond the view objects and the widening of the scope to animate such as background colors of a view.
The new animation system in Honeycomb is not specific to Views, is not limited to specific properties on objects, and is not just a visual animation system. Instead, it is a system that is all about animating values over time, and assigning those values to target objects and properties - any target objects and properties. So you can move a View or fade it in. And you can move a Drawable inside a View. And you can animate the background color of a Drawable. In fact, you can animate the values of any data structure; you just tell the animation system how long to run for, how to evaluate between values of a custom type, and what values to animate between, and the system handles the details of calculating the animated values and setting them on the target object.

Rather than just describing the capabilities of the new Android animation system, Chet walks one through the main classes of the new system, and provides some sample code as well.

After a very lengthy write up, he says there is much more to the system and invites us to his blog at graphics-geek.blogspot.com for upcoming articles, tutorials, and videos on this and related topics. He also invites one to check out the API demos, read the overview of Property Animation posted with the 3.0 SDK, dive into the code, and just play with it.

Yes make those apps sleek and better! I am awaiting my Motorola XOOM, the WiFi edition.

Android Developers Blog: Animation in Honeycomb

New Macbook Pro Line, As We Expected! Like Them

New Macbook Pro Line, http://snapvoip.blogspot.com/
As I told you before, the 17" Apple MACBook Pro is in my sight for the next laptop to be and after reading the release news, it certainly will be. Now to convince my company to get me one.
First of all, I like the configuration of the Macbook pro line. Both 15 and 17 inch lines are very powerful computers and the 17" has 1920 X 1200 resolution that PC laptop makers have abandoned, settling on consumer 1080P bandwagon. The updated 17-inch MacBook Pro has a 2.2GHz quad-core Intel Core i7 processor with 6MB shared L3 cache, but users can upgrade to an or optional 2.3GHz quad-core Intel Core i7 processor with 8MB shared L3 cache. This notebook alsofeatures the new high-speed Thunderbolt port, which allows data transfers of up to 10Gbps in addition to audio and video connections, as well as a FaceTime HD camera with 720p resolution.
More info and pricing at Apple

Animation in Honeycomb


[This post is by Chet Haase, an Android engineer who specializes in graphics and animation, and who occasionally posts videos and articles on these topics on his CodeDependent blog at graphics-geek.blogspot.com. — Tim Bray]

One of the new features ushered in with the Honeycomb release is a new animation system, a set of APIs in a whole new package (android.animation) that makes animating objects and properties much easier than it was before.

"But wait!" you blurt out, nearly projecting a mouthful of coffee onto your keyboard while reading this article, "Isn't there already an animation system in Android?"

Animation Prior to Honeycomb

Indeed, Android already has animation capabilities: there are several classes and lots of great functionality in the android.view.animation package. For example, you can move, scale, rotate, and fade Views and combine multiple animations together in an AnimationSet object to coordinate them. You can specify animations in a LayoutAnimationController to get automatically staggered animation start times as a container lays out its child views. And you can use one of the many Interpolator implementations like AccelerateInterpolator and Bounce to get natural, nonlinear timing behavior.

But there are a couple of major pieces of functionality lacking in the previous system.

For one thing, you can animate Views... and that's it. To a great extent, that's okay. The GUI objects in Android are, after all, Views. So as long as you want to move a Button, or a TextView, or a LinearLayout, or any other GUI object, the animations have you covered. But what if you have some custom drawing in your view that you'd like to animate, like the position of a Drawable, or the translucency of its background color? Then you're on your own, because the previous animation system only understands how to manipulate View objects.

The previous animations also have a limited scope: you can move, rotate, scale, and fade a View... and that's it. What about animating the background color of a View? Again, you're on your own, because the previous animations had a hard-coded set of things they were able to do, and you could not make them do anything else.

Finally, the previous animations changed the visual appearance of the target objects... but they didn't actually change the objects themselves. You may have run into this problem. Let's say you want to move a Button from one side of the screen to the other. You can use a TranslateAnimation to do so, and the button will happily glide along to the other side of the screen. And when the animation is done, it will gladly snap back into its original location. So you find the setFillAfter(true) method on Animation and try it again. This time the button stays in place at the location to which it was animated. And you can verify that by clicking on it - Hey! How come the button isn't clicking? The problem is that the animation changes where the button is drawn, but not where the button physically exists within the container. If you want to click on the button, you'll have to click the location that it used to live in. Or, as a more effective solution (and one just a tad more useful to your users), you'll have to write your code to actually change the location of the button in the layout when the animation finishes.

It is for these reasons, among others, that we decided to offer a new animation system in Honeycomb, one built on the idea of "property animation."

Property Animation in Honeycomb

The new animation system in Honeycomb is not specific to Views, is not limited to specific properties on objects, and is not just a visual animation system. Instead, it is a system that is all about animating values over time, and assigning those values to target objects and properties - any target objects and properties. So you can move a View or fade it in. And you can move a Drawable inside a View. And you can animate the background color of a Drawable. In fact, you can animate the values of any data structure; you just tell the animation system how long to run for, how to evaluate between values of a custom type, and what values to animate between, and the system handles the details of calculating the animated values and setting them on the target object.

Since the system is actually changing properties on target objects, the objects themselves are changed, not simply their appearance. So that button you move is actually moved, not just drawn in a different place. You can even click it in its animated location. Go ahead and click it; I dare you.

I'll walk briefly through some of the main classes at work in the new system, showing some sample code when appropriate. But for a more detailed view of how things work, check out the API Demos in the SDK for the new animations. There are many small applications written for the new Animations category (at the top of the list of demos in the application, right before the word App. I like working on animation because it usually comes first in the alphabet).

In fact, here's a quick video showing some of the animation code at work. The video starts off on the home screen of the device, where you can see some of the animation system at work in the transitions between screens. Then the video shows a sampling of some of the API Demos applications, to show the various kinds of things that the new animation system can do. This video was taken straight from the screen of a Honeycomb device, so this is what you should see on your system, once you install API Demos from the SDK.

Animator

Animator is the superclass of the new animation classes, and has some of the common attributes and functionality of the subclasses. The subclasses are ValueAnimator, which is the core timing engine of the system and which we'll see in the next section, and AnimatorSet, which is used to choreograph multiple animators together into a single animation. You do not use Animator directly, but some of the methods and properties of the subclasses are exposed at this superclass level, like the duration, startDelay and listener functionality.

The listeners tend to be important, because sometimes you want to key some action off of the end of an animation, such as removing a view after an animation fading it out is done. To listen for animator lifecycle events, implement the AnimatorListener interface and add your listener to the Animator in question. For example, to perform an action when the animator ends, you could do this:

    anim.addListener(new Animator.AnimatorListener() {
public void onAnimationStart(Animator animation) {}
public void onAnimationEnd(Animator animation) {
// do something when the animation is done
}
public void onAnimationCancel(Animator animation) {}
public void onAnimationRepeat(Animator animation) {}
});

As a convenience, there is an adapter class, AnimatorListenerAdapter, that stubs out these methods so that you only need to override the one(s) that you care about:


anim.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
// do something when the animation is done
}
});

ValueAnimator

ValueAnimator is the main workhorse of the entire system. It runs the internal timing loop that causes all of a process's animations to calculate and set values and has all of the core functionality that allows it to do this, including the timing details of each animation, information about whether an animation repeats, listeners that receive update events, and the capability of evaluating different types of values (see TypeEvaluator for more on this). There are two pieces to animating properties: calculating the animated values and setting those values on the object and property in question. ValueAnimator takes care of the first part; calculating the values. The ObjectAnimator class, which we'll see next, is responsible for setting those values on target objects.

Most of the time, you will want to use ObjectAnimator, because it makes the whole process of animating values on target objects much easier. But sometimes you may want to use ValueAnimator directly. For example, the object you want to animate may not expose setter functions necessary for the property animation system to work. Or perhaps you want to run a single animation and set several properties from that one animated value. Or maybe you just want a simple timing mechanism. Whatever the case, using ValueAnimator is easy; you just set it up with the animation properties and values that you want and start it. For example, to animate values between 0 and 1 over a half-second, you could do this:

    ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f);
anim.setDuration(500);
anim.start();

But animations are a bit like the tree in the forest philosophy question ("If a tree falls in the forest and nobody is there to hear it, does it make a sound?"). If you don't actually do anything with the values, does the animation run? Unlike the tree question, this one has an answer: of course it runs. But if you're not doing anything with the values, it might as well not be running. If you started it, chances are you want to do something with the values that it calculates along the way. So you add a listener to it, to listen for updates at each frame. And when you get the callback, you call getAnimatedValue(), which returns an Object, to find out what the current value is.

    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Float value = (Float) animation.getAnimatedValue();
// do something with value...
}
});

Of course, you don't necessarily always want to animate float values. Maybe you need to animate something that's an integer instead:

    ValueAnimator anim = ValueAnimator.ofInt(0, 100);

or in XML:

    <animator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0"
android:valueTo="100"
android:valueType="intType"/>

In fact, maybe you need to animate something entirely different, like a Point, or a Rect, or some custom data structure of your own. The only types that the animation system understands by default are float and int, but that doesn't mean that you're stuck with those two types. You can to use the Object version of the factory method, along with a TypeEvaluator (explained later), to tell the system how to calculate animated values for this unknown type:

    Point p0 = new Point(0, 0);
Point p1 = new Point(100, 200);
ValueAnimator anim = ValueAnimator.ofObject(pointEvaluator, p0, p1);

There are other animation attributes that you can set on a ValueAnimator besides duration, including:

  • setStartDelay(long): This property controls how long the animation waits after a call to start() before it starts playing.
  • setRepeatCount(int) and setRepeatMode(int): These functions control how many times the animation repeats and whether it repeats in a loop or reverses direction each time.
  • setInterpolator(TimeInterpolator): This object controls the timing behavior of the animation. By default, animations accelerate into and decelerate out of the motion, but you can change that behavior by setting a different interpolator. This function acts just like the one of the same name in the previous Animation class; it's just that the type of the parameter (TimeInterpolator) is different from that of the previous version (Interpolator). But the TimeInterpolator interface is just a super-interface of the existing Interpolator interface in the android.view.animation package, so you can use any of the existing Interpolator implementations, like Bounce, as arguments to this function on ValueAnimator.

ObjectAnimator

ObjectAnimator is probably the main class that you will use in the new animation system. You use it to construct animations with the timing and values that ValueAnimator takes, and also give it a target object and property name to animate. It then quietly animates the value and sets those animated values on the specified object/property. For example, to fade out some object myObject, we could animate the alpha property like this:

    ObjectAnimator.ofFloat(myObject, "alpha", 0f).start();

Note, in this example, a special feature that you can use to make your animations more succinct; you can tell it the value to animate to, and it will use the current value of the property as the starting value. In this case, the animation will start from whatever value alpha has now and will end up at 0.

You could create the same thing in an XML resource as follows:

    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueTo="0"
android:propertyName="alpha"/>

Note, in the XML version, that you cannot set the target object; this must be done in code after the resource is loaded:

    ObjectAnimator anim = AnimatorInflator.loadAnimator(context, resID);
anim.setTarget(myObject);
anim.start();

There is a hidden assumption here about properties and getter/setter functions that you have to understand before using ObjectAnimator: you must have a public "set" function on your object that corresponds to the property name and takes the appropriate type. Also, if you use only one value, as in the example above, your are asking the animation system to derive the starting value from the object, so you must also have a public "get" function which returns the appropriate type. For example, the class of myObject in the code above must have these two public functions in order for the animation to succeed:

    public void setAlpha(float value);
public float getAlpha();

So by passing in a target object of some type and the name of some property foo supposedly on that object, you are implicitly declaring a contract that that object has at least a setFoo() function and possibly also a getFoo() function, both of which handle the type used in the animation declaration. If all of this is true, then the animation will be able to find those setter/getter functions on the object and set values during the animation. If the functions do not exist, then the animation will fail at runtime, since it will be unable to locate the functions it needs. (Note to users of ProGuard, or other code-stripping utilities: If your setter/getter functions are not used anywhere else in the code, make sure you tell the utility to leave the functions there, because otherwise they may get stripped out. The binding during animation creation is very loose and these utilities have no way of knowing that these functions will be required at runtime.)

View properties

The observant reader, or at least the ones that have not yet browsed on to some other article, may have pinpointed a flaw in the system thus far. If the new animation framework revolves around animating properties, and if animations will be used to animate, to a large extent, View objects, then how can they be used against the View class, which exposes none of its properties through set/get functions?

Excellent question: you get to advance to the bonus round and keep reading.

The way it works is that we added new properties to the View class in Honeycomb. The old animation system transformed and faded View objects by just changing the way that they were drawn. This was actually functionality handled in the container of each View, because the View itself had no transform properties to manipulate. But now it does: we've added several properties to View to make it possible to animate Views directly, allowing you to not only transform the way a View looks, but to transform its actual location and orientation. Here are the new properties in View that you can set, get and animate directly:

  • translationX and translationY: These properties control where the View is located as a delta from its left and top coordinates which are set by its layout container. You can run a move animation on a button by animating these, like this: ObjectAnimator.ofFloat(view, "translationX", 0f, 100f);.
  • rotation, rotationX, and rotationY: These properties control the rotation in 2D (rotation) and 3D around the pivot point.
  • scaleX and scaleY: These properties control the 2D scaling of a View around its pivot point.
  • pivotX and pivotY: These properties control the location of the pivot point, around which the rotation and scaling transforms occur. By default, the pivot point is centered at the center of the object.
  • x and y: These are simple utility properties to describe the final location of the View in its container, as a sum of the left/top and translationX/translationY values.
  • alpha: This is my personal favorite property. No longer is it necessary to fade out an object by changing a value on its transform (a process which just didn't seem right). Instead, there is an actual alpha value on the View itself. This value is 1 (opaque) by default, with a value of 0 representing full transparency (i.e., it won't be visible). To fade a View out, you can do this: ObjectAnimator.ofFloat(view, "alpha", 0f);

Note that all of the "properties" described above are actually available in the form of set/get functions (e.g., setRotation() and getRotation() for the rotation property). This makes them both possible to access from the animation system and (probably more importantly) likely to do the right thing when changed. That is, you don't want to scale an object and have it just sit there because the system didn't know that it needed to redraw the object in its new orientation; each of the setter functions takes care to run the appropriate invalidation step to make the rendering work correctly.

AnimatorSet

This class, like the previous AnimationSet, exists to make it easier to choreograph multiple animations. Suppose you want several animations running in tandem, like you want to fade out several views, then slide in other ones while fading them in. You could do all of this with separate animations and either manually starting the animations at the right times or with startDelays set on the various delayed animations. Or you could use AnimatorSet to do all of that for you. AnimatorSet allows you to animations that play together, playTogether(Animator...), animations that play one after the other, playSequentially(Animator...), or you can organically build up a set of animations that play together, sequentially, or with specified delays by calling the functions in the AnimatorSet.Builder class, with(), before(), and after(). For example, to fade out v1 and then slide in v2 while fading it, you could do something like this:

    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v1, "alpha", 0f);
ObjectAnimator mover = ObjectAnimator.ofFloat(v2, "translationX", -500f, 0f);
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v2, "alpha", 0f, 1f);
AnimatorSet animSet = new AnimatorSet().play(mover).with(fadeIn).after(fadeOut);;
animSet.start();

Like ValueAnimator and ObjectAnimator, you can create AnimatorSet objects in XML resources as well.

TypeEvaluator

I wanted to talk about just one more thing, and then I'll leave you alone to explore the code and play with the API demos. The last class I wanted to mention is TypeEvaluator. You may not use this class directly for most of your animations, but you should that it's there in case you need it. As I said earlier, the system knows how to animate float and int values, but otherwise it needs some help knowing how to interpolate between the values you give it. For example, if you want to animate between the Point values in one of the examples above, how is the system supposed to know how to interpolate the values between the start and end points? Here's the answer: you tell it how to interpolate, using TypeEvaluator.

TypeEvaluator is a simple interface that you implement that the system calls on each frame to help it calculate an animated value. It takes a floating point value which represents the current elapsed fraction of the animation and the start and end values that you supplied when you created the animation and it returns the interpolated value between those two values at that fraction. For example, here's the built-in FloatEvaluator class used to calculate animated floating point values:

    public class FloatEvaluator implements TypeEvaluator {
public Object evaluate(float fraction, Object startValue, Object endValue) {
float startFloat = ((Number) startValue).floatValue();
return startFloat + fraction * (((Number) endValue).floatValue() - startFloat);
}
}

But how does it work with a more complex type? For an example of that, here is an implementation of an evaluator for the Point class, from our earlier example:

    public class PointEvaluator implements TypeEvaluator {
public Object evaluate(float fraction, Object startValue, Object endValue) {
Point startPoint = (Point) startValue;
Point endPoint = (Point) endValue;
return new Point(startPoint.x + fraction * (endPoint.x - startPoint.x),
startPoint.y + fraction * (endPoint.y - startPoint.y));
}
}

Basically, this evaluator (and probably any evaluator you would write) is just doing a simple linear interpolation between two values. In this case, each 'value' consists of two sub-values, so it is linearly interpolating between each of those.

You tell the animation system to use your evaluator by either calling the setEvaluator() method on ValueAnimator or by supplying it as an argument in the Object version of the factory method. To continue our earlier example animating Point values, you could use our new PointEvaluator class above to complete that code:

    Point p0 = new Point(0, 0);
Point p1 = new Point(100, 200);
ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), p0, p1);

One of the ways that you might use this interface is through the ArgbEvaluator implementation, which is included in the Android SDK. If you animate a color property, you will probably either use this evaluator automatically (which is the case if you create an animator in an XML resource and supply colors as values) or you can set it manually on the animator as described in the previous section.

But Wait, There's More!

There's so much more to the new animation system that I haven't gotten to. There's the repetition functionality, the listeners for animation lifecycle events, the ability to supply multiple values to the factory methods to get animations between more than just two endpoints, the ability to use the Keyframe class to specify a more complex time/value sequence, the use of PropertyValuesHolder to specify multiple properties to animate in parallel, the LayoutTransition class for automating simple layout animations, and so many other things. But I really have to stop writing soon and get back to working on the code. I'll try to post more articles in the future on some of these items, but also keep an eye on my blog at graphics-geek.blogspot.com for upcoming articles, tutorials, and videos on this and related topics. Until then, check out the API demos, read the overview of Property Animation posted with the 3.0 SDK, dive into the code, and just play with it.

Wednesday, February 23, 2011

Facebook Android app, Google Calendar App, Not Secure,

Facebook's Android app, Google Calendar App, Not Secure, http://snapvoip.blogspot.com/
Facebook and Google Calendar Apps, running on Android OS fail to encrypt data sent to and from respective servers. Please remember it is the app that is misbehaving not the Android OS
But before jumping into conclusions based on sensationalism like The register.com did, here are the facts the team, Freedom to tinker, found. Rice University professor Dan Wallach connected a packet sniffer to his network and observed the traffic sent to and from his Android handset when he used various apps available for Google's mobile platform. The real facts are;
  • Google properly encrypts traffic to Gmail and Google Voice, but they don't encrypt traffic to Google Calendar. An eavesdropper can definitely see your calendar transactions and can likely impersonate you to Google Calendar.
  • Twitter does everything in the clear, but then your tweets generally go out for all the world to see, so there isn't really a privacy concern. Twitter uses OAuth signatures, which appear to make it difficult for a third party to create forged tweets.
  • Facebook does everything in the clear, much like Twitter. My Facebook account's web settings specify full-time encrypted traffic, but this apparently isn't honored or supported by Facebook's Android app. Facebook isn't doing anything like OAuth signatures, so it may be possible to inject bogus posts as well. Also notable: one of the requests we saw going from my phone to the Facebook server included an SQL statement within. Could Facebook's server have a SQL injection vulnerability? Maybe it was just FQL, which is ostensibly safe.
  • The free version of Angry Birds, which uses AdMob, appears to preserve your privacy. The requests going to the AdMob server didn't have anything beyond the model of my phone. When I clicked an ad, it sent the (x,y) coordinates of my click and got a response saying to send me to a URL in the web browser. (Got to love the Angry Birds Birthday Cake!)
  • Another game I tried, Galcon, had no network activity whatsoever. Good for them.
  • SoundHound and ShopSaavy transmit your fine GPS coordinates whenever you make a request to them. One of the students typed the coordinates into Google Maps and they nailed me to the proper side of the building I was teaching in.
So read and use applications wisely. Hope Dan does the same with an iPhone,

T-Mobile Samsung Galaxy S 4G Comprehensive Review

T-Mobile Samsung Galaxy S 4G http://snapvoip.blogspot.com/
Laptop Mag does a pretty good review of Samsung Galaxy S 4G, the T-Mobile version. From Design display interface, 4G and data speeds are checked and compared. So are the Apps Video, video calling and battery life. A good read.

Laptopmag

Best Practices for Honeycomb and Tablets

The first tablets running Android 3.0 (“Honeycomb”) will be hitting the streets on Thursday Feb. 24th, and we’ve just posted the full SDK release. We encourage you to test your applications on the new platform, using a tablet-size AVD.

Developers who’ve followed the Android Framework’s guidelines and best practices will find their apps work well on Android 3.0. This purpose of this post is to provide reminders of and links to those best practices.

Moving Toward Honeycomb

There’s a comprehensive discussion of how to work with the new release in Optimizing Apps for Android 3.0. The discussion includes the use of the emulator; most developers, who don’t have an Android tablet yet, should use it to test and update their apps for Honeycomb.

While your existing apps should work well, developers also have the option to improve their apps’ look and feel on Android 3.0 by using Honeycomb features; for example, see The Android 3.0 Fragments API. We’ll have more on that in this space, but in the meantime we recommend reading Strategies for Honeycomb and Backwards Compatibility for advice on adding Honeycomb polish to existing apps.

Specifying Features

There have been reports of apps not showing up in Android Market on tablets. Usually, this is because your application manifest has something like this:

<uses-feature android:name="android.hardware.telephony" />

Many of the tablet devices aren’t phones, and thus Android Market assumes the app is not compatible. See the documentation of <uses-feature>. However, such an app’s use of the telephony APIs might well be optional, in which case it should be available on tablets. There’s a discussion of how to accomplish this in Future-Proofing Your App and The Five Steps to Future Hardware Happiness.

Rotation

The new environment is different from what we’re used to in two respects. First, you can hold the devices with any of the four sides up and Honeycomb manages the rotation properly. In previous versions, often only two of the four orientations were supported, and there are apps out there that relied on this in ways that will break them on Honeycomb. If you want to stay out of rotation trouble, One Screen Turn Deserves Another covers the issues.

The second big difference doesn’t have anything to do with software; it’s that a lot of people are going to hold these things horizontal (in “landscape mode”) nearly all the time. We’ve seen a few apps that have a buggy assumption that they’re starting out in portrait mode, and others that lock certain screens into portrait or landscape but really shouldn’t.

A Note for Game Developers

A tablet can probably provide a better game experience for your users than any handset can. Bigger is better. It’s going to cost you a little more work than developers of business apps, because quite likely you’ll want to rework your graphical assets for the big screen.

There’s another issue that’s important to game developers: Texture Formats. Read about this in Game Development for Android: A Quick Primer, in the section labeled “Step Three: Carefully Design the Best Game Ever”.

We've also added a convenient way to filter applications in Android Market based on the texture formats they support; see the documentation of <supports-gl-texture> for more details.

Happy Coding

Once you’ve held one of the new tablets in your hands, you’ll want to have your app not just running on it (which it probably already does), but expanding minds on the expanded screen. Have fun!

Tuesday, February 22, 2011

Final Android 3.0 Platform and Updated SDK Tools


We are pleased to announce that the full SDK for Android 3.0 is now available to developers. The APIs are final, and you can now develop apps targeting this new platform and publish them to Android Market. The new API level is 11.

For an overview of the new user and developer features, see the Android 3.0 Platform Highlights.

Together with the new platform, we are releasing updates to our SDK Tools (r10) and ADT Plugin for Eclipse (10.0.0). Key features include:

  • UI Builder improvements in the ADT Plugin:
    • New Palette with categories and rendering previews. (details)
    • More accurate rendering of layouts to more faithfully reflect how the layout will look on devices, including rendering status and title bars to more accurately reflect screen space actually available to applications.
    • Selection-sensitive action bars to manipulate View properties.
    • Zoom improvements (fit to view, persistent scale, keyboard access) (details).
    • Improved support for <merge> layouts, as well as layouts with gesture overlays.
  • Traceview integration for easier profiling from ADT. (details)
  • Tools for using the Renderscript graphics engine: the SDK tools now compiles .rs files into Java Programming Language files and native bytecode.

To get started developing or testing applications on Android 3.0, visit the Android Developers site for information about the Android 3.0 platform, the SDK Tools, and the ADT Plugin.

Thursday, February 17, 2011

HTC HD2 Apps: XDA Facebook v4.5.2 RC1





The current facebook application developed by Microsoft for WM is lacking in refinement. We at xda-developers have decided to take this into our own hands and provide a better facebook experience for Windows Mobile.



This app is still in beta stages, and not all features are working yet.



Requirements: Microsoft .NET CF 3.5



Download This HD2 App Here:


















HD2Apps Facebook page
FileServing

cab file: 1.46MB







Friday, February 11, 2011

Mobilificationizing

If you are reading this on a desktop computer, the screen shots are for you. If you have a smartphone or other smaller screened device let me know in the comments how it looks and what does/doesn't work.

I was feeling under the weather recently, and as a result I stayed home from work to sleep longer, take some medicine and get better. After waking up around 10am I realized that there were a few things I was putting off because I didn't have time during the day at work, and most of my free night-time is taken up by a side-project that I've been working on for the last few months (http://studybuddycampus.com) and normal life things.

I took the opportunity to make some changes to my wife's blog about our family. It now has 3 columns and she loves it! Go take a look: http://tommyandalisha.blogspot.com

I finally got around to fixing the obnoxious problem I have when I visit this very site on my phone, the fixed-width sidebar. I know that I haven't been the best at updating and that is partly due to me wanting to play Halo/Call of Duty/etc or just not feeling like I have anything interesting to say. I feel that, as a heavy mobile internet user, I should have a site that looks good on a phone.

My site was slapped together a few years ago using asp.net/c# with master pages. Their was no concern in my mind for a mobile site, luckily master pages are wonderful and all I needed to do was create a duplicate of my existing template and start chopping. First thing I did was move the sidebar on top so that it sits on top of the content it normally flanks. Then I gave each main wrapper a width of 100% so that it would stretch to whatever screen size it was given. I checked it out on my phone and realized that the phone thought the web page was much wider than the phone's screen. I added the following meta tag to prevent this and tell the page to fit the width of the device and not assume a desktop size.




After a few more tweaks to the general layout and adjusting the padding/margins I got the site to look somewhat presentable. I used some fancy jQuery magic to get the sidebar er...menu to show/hide when the arrow in the upper right-hand is touched.



Now all I needed to do was redirect users to the correct master page when visiting my site on a mobile phone. I found the following code online and added it to all pages in need of the mobile layout.



After that was in place I realized that images from my posts were a little bit too wide for the average phone screen. Instead of manually resizing all of my images, I once again turned to jQuery for some help. Using an example I found, I check each image's width, if it is wider than the current width of the body tag, it reduces its size to fit nicely within the confines of the given screen.



All in all the process was fairly painless to convert an existing site, most of the work was getting the formatting correct. In the future I'd like to build a site from the ground up with current mobile browsers in mind, but that's for another sick day...

HTC HD2 Games: Looney Tunes Monster Match v9.1.0





Help Tweety, Bugs Bunny, Daffy Duck and Porky Pig save Acme Acres from evil Dr. Fricktenstein in an addictive match-3 puzzle game.



Defeat a monster army by matching 3 or more adjacent pieces in this gag filled game.



Choose a favorite Looney Tunes character to battle against numerous wacky enemies and find the three missing monster badge pieces.



Match 3 or more adjacent pieces to defeat evil Dr. Fricktenstein's army. Unleash hilarious special attacks to defeat your opponents and save Acme Acres from the evil doctor's scheme!.



With a unique Looney Tunes style full of gags and laughs, Looney Tunes Monster Match is the perfect mobile companion to lighten up your day and set your inner monster free!



Download This HD2 Game Here:


















HD2Apps Facebook page
FileServing

cab file: 1.16MB







Wednesday, February 9, 2011

Introducing Renderscript

[This post is by R. Jason Sams, an Android engineer who specializes in graphics, performance tuning, and software architecture. —Tim Bray]

Renderscript is a key new Honeycomb feature which we haven’t yet discussed in much detail. I will address this in two parts. This post will be a quick overview of Renderscript. A more detailed technical post with a simple example will be provided later.

Renderscript is a new API targeted at high-performance 3D rendering and compute operations. The goal of Renderscript is to bring a lower level, higher performance API to Android developers. The target audience is the set of developers looking to maximize the performance of their applications and are comfortable working closer to the metal to achieve this. It provides the developer three primary tools: A simple 3D rendering API on top of hardware acceleration, a developer friendly compute API similar to CUDA, and a familiar language in C99.

Renderscript has been used in the creation of the new visually-rich YouTube and Books apps. It is the API used in the live wallpapers shipping with the first Honeycomb tablets.

The performance gain comes from executing native code on the device. However, unlike the existing NDK, this solution is cross-platform. The development language for Renderscript is C99 with extensions, which is compiled to a device-agnostic intermediate format during the development process and placed into the application package. When the app is run, the scripts are compiled to machine code and optimized on the device. This eliminates the problem of needing to target a specific machine architecture during the development process.

Renderscript is not intended to replace the existing high-level rendering APIs or languages on the platform. The target use is for performance-critical code segments where the needs exceed the abilities of the existing APIs.

It may seem interesting that nothing above talked about running code on CPUs vs. GPUs. The reason is that this decision is made on the device at runtime. Simple scripts will be able to run on the GPU as compute workloads when capable hardware is available. More complex scripts will run on the CPU(s). The CPU also serves as a fallback to ensure that scripts are always able to run even if a suitable GPU or other accelerator is not present. This is intended to be transparent to the developer. In general, simpler scripts will be able to run in more places in the future. For now we simply leverage the CPU resources and distribute the work across as many CPUs as are present in the device.


The video above, captured through an Android tablet’s HDMI out, is an example of Renderscript compute at work. (There’s a high-def version on YouTube.) In the video we show a simple brute force physics simulation of around 900 particles. The compute script runs each frame and automatically takes advantage of both cores. Once the physics simulation is done, a second graphics script does the rendering. In the video we push one of the larger balls to show the interaction. Then we tilt the tablet and let gravity do a little work. This shows the power of the dual A9s in the new Honeycomb tablet.

Renderscript Graphics provides a new runtime for continuously rendering scenes. This runtime sits on top of HW acceleration and uses the developers’ scripts to provide custom functionality to the controlling Dalvik code. This controlling code will send commands to it at a coarse level such as “turn the page” or “move the list”. The commands the two sides speak are determined by the scripts the developer provides. In this way it’s fully customizable. Early examples of Renderscript graphics were the live wallpapers and 3d application launcher that shipped with Eclair.

With Honeycomb, we have migrated from GL ES 1.1 to 2.0 as the renderer for Renderscript. With this, we have added programmable shader support, 3D model loading, and much more efficient allocation management. The new compiler, based on LLVM, is several times more efficient than acc was during the Eclair-through-Gingerbread time frame. The most important change is that the Renderscript API and tools are now public.

The screenshot above was taken from one of our internal test apps. The application implements a simple scene-graph which demonstrates recursive script to script calling. The Androids are loaded from an A3D file created in Maya and translated from a Collada file. A3D is an on device file format for storing Renderscript objects.

Later we will follow up with more technical information and sample code.

Android 2.3.3 Platform, New NFC Capabilities

Several weeks ago we released Android 2.3, which introduced several new forms of communication for developers and users. One of those, Near Field Communications (NFC), let developers get started creating a new class of contactless, proximity-based applications for users.

NFC is an emerging technology that promises exciting new ways to use mobile devices, including ticketing, advertising, ratings, and even data exchange with other devices. We know there’s a strong interest to include these capabilities into many applications, so we’re happy to announce an update to Android 2.3 that adds new NFC capabilities for developers. Some of the features include:

  • A comprehensive NFC reader/writer API that lets apps read and write to almost any standard NFC tag in use today.
  • Advanced Intent dispatching that gives apps more control over how/when they are launched when an NFC tag comes into range.
  • Some limited support for peer-to-peer connection with other NFC devices.

We hope you’ll find these new capabilities useful and we’re looking forward to seeing the innovative apps that you will create using them.

Android 2.3.3 is a small feature release that includes a new API level, 10.
Going forward, we expect most devices shipping with an Android 2.3 platform to run Android 2.3.3 (or later). For an overview of the API changes, see the Android 2.3.3 Version Notes. The Android 2.3.3 SDK platform for development and testing is available through the Android SDK Manager.

Monday, February 7, 2011

HTC HD2 Apps: RapidRead v0.7.3 b





RapidRead is a forum reading application similar to tapatalk.

The aim of this application is to offer you a fast, easy and economic way of accessing your favorite forums, without the need of a web browser or extra costs on your data plan.



More Information about this app can be found here.



Requirements: Microsoft .NET CF 3.5



If you are active on forums related to WM or the HD2, please mention this blog and add a link to http://HD2Apps.blogspot.com . Thanks!



Download This HD2 App Here:
















HD2Apps Facebook page
FileServing

cab file: 1.71MB