tag:blogger.com,1999:blog-92047686232232095182024-03-05T18:15:51.098+05:30Abhinava's BlogGet the latest news and updates about upcoming and existing technologies in the market (Most of them free...)
Thanks for visiting the blog..
Please do put your comments.Unknownnoreply@blogger.comBlogger117125tag:blogger.com,1999:blog-9204768623223209518.post-53297501603018884242019-02-20T14:12:00.000+05:302019-02-20T14:12:40.964+05:30Using Tensorflow with Keras - Introduction<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-size: x-large;">Tensorflow + Keras</span></h2>
<div>
<br /></div>
<h3 style="text-align: left;">
Yeah i have heard of em... Yay!! Am a techie!!</h3>
<div>
<br /></div>
<div>
Well good for you.. we are not going to talk in detail about what Tensorflow and Keras are... </div>
<div>
Although am sure, many of us at least want a crash course! Therefore, as a super quick intro.. </div>
<div>
<br /></div>
<div>
<b>Tensorflow</b>: An open source machine learning framework backed by google (kinda sdk for machine learning). They have done the mathematical implementations so you don't have to re-invent the wheels.</div>
<div>
<br /></div>
<div>
<b>Keras</b>: Is also an open source library (kinda sdk) <b>BUT </b>it is an interface. What it does, is to further simplify the frameworks like Tensorflow so that even people like me can code for Machine learning!</div>
<div>
<br /></div>
<div>
For the sake of simplicity, will try to stick with imitating linear regression that we used in our previous example.. by this example you will see that using Keras with tensorflow simplifies our lives so much more!!</div>
<div>
<br /></div>
<div>
Lets take a <a href="https://github.com/abhinavasr/machinelearning/blob/master/input_rand1.csv" target="_blank">sample data-set</a>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxUw4_J6AH56N9VgCafDaXqZSVVovFbMR-CnnD7r4a4agSrMX7wHfTsD2cOswIXSQuCw5ZBCF4DI-3MXARi0KBjn878S6-6aJ27RGlNX99fxTM1jfEyC_XRq4fIxiQSIGVSpQFeiZwRRI/s1600/graph_1550649573.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxUw4_J6AH56N9VgCafDaXqZSVVovFbMR-CnnD7r4a4agSrMX7wHfTsD2cOswIXSQuCw5ZBCF4DI-3MXARi0KBjn878S6-6aJ27RGlNX99fxTM1jfEyC_XRq4fIxiQSIGVSpQFeiZwRRI/s320/graph_1550649573.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
Nice huh!!! The data set above contains a randomized sample of information in X & Y columns. The goal of our app is to build a simplest neural network that can iterate through and help us predict values for given input.</div>
<div>
<br /></div>
<div>
Now, since we are going to use a linear regression, obviously the outputs shall always be somewhat a straight line.</div>
<div>
<br /></div>
<div>
Alright, lets begin! Will try to keep the codes in code sections so its easy for us to iterate through.</div>
<div>
<br /></div>
<div>
Lets prepare our dataset (i.e. Pre-processing of data)</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
<span style="color: #6a9955;">#We will use Pandas to read the csv file</span></div>
<div>
<span style="color: #c586c0;">import</span> pandas <span style="color: #c586c0;">as</span> pd</div>
<br /><div>
file1 = <span style="color: #ce9178;">"../data/input_rand1.csv"</span></div>
<br /><div>
<span style="color: #6a9955;"># Incase you have mode than 1 csv, you may want to use this piece of code to </span></div>
<div>
<span style="color: #6a9955;"># combine them</span></div>
<div>
all_files = [file1]</div>
<div>
dataset = pd.concat((pd.read_csv(f,<span style="color: #9cdcfe;">delimiter</span>=<span style="color: #ce9178;">','</span>) <span style="color: #c586c0;">for</span> f <span style="color: #569cd6;">in</span> all_files))</div>
<br /><div>
<span style="color: #6a9955;"># We don't need empty values</span></div>
<div>
dataset = dataset.dropna(<span style="color: #9cdcfe;">how</span>=<span style="color: #ce9178;">"any"</span>, <span style="color: #9cdcfe;">axis</span>=<span style="color: #b5cea8;">0</span>)</div>
<br /><div>
<span style="color: #6a9955;">#replace spaces with _ for headers</span></div>
<div>
dataset.rename(<span style="color: #9cdcfe;">columns</span>=<span style="color: #569cd6;">lambda</span> <span style="color: #9cdcfe;">x</span>: x.replace(<span style="color: #ce9178;">' '</span>, <span style="color: #ce9178;">'_'</span>), <span style="color: #9cdcfe;">inplace</span>=<span style="color: #569cd6;">True</span>)</div>
</div>
</div>
<div>
<br /></div>
<div>
Lets divide the data into training set and testing set</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
train = dataset.sample(<span style="color: #9cdcfe;">frac</span>=<span style="color: #b5cea8;">0.8</span>,<span style="color: #9cdcfe;">random_state</span>=<span style="color: #b5cea8;">200</span>)</div>
<div>
test = dataset.drop(train.index)</div>
</div>
</div>
<div>
<br /></div>
<div>
Once the data set has been divided, lets identify our features and labels (in this case, its X -> features, and Y-> Label)</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
<div style="line-height: 19px;">
<div>
X_train = train.drop(<span style="color: #ce9178;">"Y"</span>, <span style="color: #9cdcfe;">axis</span>=<span style="color: #b5cea8;">1</span>)</div>
<div>
Y_train = train[<span style="color: #ce9178;">"Y"</span>]</div>
<div>
<span style="color: #6a9955;"># Also for Test set</span></div>
</div>
</div>
<div>
X_test = test.drop(<span style="color: #ce9178;">"Y"</span>, <span style="color: #9cdcfe;">axis</span>=<span style="color: #b5cea8;">1</span>)</div>
<div>
Y_test = test[<span style="color: #ce9178;">"Y"</span>]</div>
</div>
</div>
<div>
<br /></div>
<div>
So now are data is ready lets get the bigshots in the game</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
<span style="color: #c586c0;">from</span> tensorflow <span style="color: #c586c0;">import</span> keras</div>
<div>
<span style="color: #6a9955;"># We will like to see how the training went on tensorboard too!</span></div>
<div>
<span style="color: #c586c0;">from</span> tensorflow.keras.callbacks <span style="color: #c586c0;">import</span> TensorBoard</div>
<div>
<span style="color: #c586c0;">import</span> time</div>
</div>
</div>
<div>
<br /></div>
<div>
Initializing tensorboard and providing a location where it may want to store its files</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
NAME = <span style="color: #ce9178;">"Linear_</span><span style="color: #569cd6;">{}</span><span style="color: #ce9178;">"</span>.format(<span style="color: #4ec9b0;">int</span>(time.time()))</div>
<div>
tb = TensorBoard(<span style="color: #9cdcfe;">log_dir</span>=<span style="color: #ce9178;">'logs/</span><span style="color: #569cd6;">{}</span><span style="color: #ce9178;">'</span>.format(NAME))</div>
</div>
</div>
<div>
<br /></div>
<div>
Okay.. now comes the most complicated part! We will need to build the model...</div>
<div>
If you can recall, in our previous code, we had to create input_fn and all other fancy stuff so that we can convert our datasets into tensors and then pass it to the estimator.</div>
<div>
<br /></div>
<div>
Well in case of Keras with Tensorflow, you may not need that ..</div>
<div>
<br /></div>
<div>
So building model is simply.. </div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
model = keras.Sequential([</div>
<div>
keras.layers.Dense(<span style="color: #b5cea8;">10</span>, <span style="color: #9cdcfe;">input_shape</span>=[<span style="color: #dcdcaa;">len</span>(<span style="color: #4ec9b0;">list</span>(X_test))]),</div>
<div>
keras.layers.Dense(<span style="color: #b5cea8;">1</span>)</div>
<div>
])</div>
</div>
</div>
<div>
<br /></div>
<div>
The above code basically mean that you are creating a model with 2 layers.. 1st layer has 10 nodes with input shape of number of columns in features.</div>
<div>
<br /></div>
<div>
And since we want only 1 output as result for every row of input that we give, we have 1 node as output layer.</div>
<div>
<br /></div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
<div>
model.compile(<span style="color: #9cdcfe;">loss</span>=<span style="color: #ce9178;">'mse'</span>,</div>
<div>
<span style="color: #9cdcfe;">optimizer</span>=<span style="color: #ce9178;">'adam'</span>,</div>
<div>
<span style="color: #9cdcfe;">metrics</span>=[<span style="color: #ce9178;">'mae'</span>, <span style="color: #ce9178;">'mse'</span>])</div>
</div>
<div>
<br /></div>
<div>
For this example we are going to use adam optimizer, in case you want more details on Mr. Adam, <a href="https://www.youtube.com/watch?v=JXQT_vxqwIs">go here</a></div>
<div>
<br /></div>
<div>
now let the training begin..!!!!</div>
<div>
As mentioned no need to change pandas dataset to anything special, you can pass them as is to the keras system.</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;">
model.fit(X_train, Y_train, <span style="color: #9cdcfe;">epochs</span>=1000, <span style="color: #9cdcfe;">validation_split</span> = <span style="color: #b5cea8;">0.2</span>, <span style="color: #9cdcfe;">callbacks</span>=[tb])</div>
</div>
<div>
<br /></div>
<div>
Now the only thing remaining to do is test it out for predictions.</div>
<div>
For this example am just going to run all the inputs (i.e. X) again through the predictor and see what will be the result (even though i know it should be a straight line somewhere in the middle of the graph.. still, its fun!)</div>
<div>
<br /></div>
<div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">
input_dict = train</div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">
input_dict_x = input_dict.drop(<span style="color: #ce9178;">"Y"</span>, <span style="color: #9cdcfe;">axis</span>=<span style="color: #b5cea8;">1</span>)</div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">
input_dict_y = input_dict[<span style="color: #ce9178;">"Y"</span>]</div>
<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">
predict_results = model.predict(input_dict_x)</div>
</div>
<div>
<br /></div>
<div>
Lets check our updated graph!!</div>
<div>
<br /></div>
<h3 style="text-align: center;">
<span style="font-family: Times, Times New Roman, serif;">Behold The Graph!</span></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6E5Fw-LY60sG21Ygae9cRwUkXK_EdRmG_vzyK-qpoICl8ovUlTMETBVpImonapWTtc7VpfMljBj1QDL1lg4o8xDFb5UXmbgl3l0hqBBmTipG4DZZnCocJqU-m9XHj9N3xGspgy_imxKQ/s1600/graph_1550651301.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6E5Fw-LY60sG21Ygae9cRwUkXK_EdRmG_vzyK-qpoICl8ovUlTMETBVpImonapWTtc7VpfMljBj1QDL1lg4o8xDFb5UXmbgl3l0hqBBmTipG4DZZnCocJqU-m9XHj9N3xGspgy_imxKQ/s320/graph_1550651301.png" width="320" /></a></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;">As you can see the graph has a straight line right in the middle, which we anyways expected..</span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;">In case you want to just download the code and run it.. feel free to swing by on my github : <a href="https://github.com/abhinavasr/machinelearning" target="_blank">https://github.com/abhinavasr/machinelearning </a> I'll try to share most of my learnings there!</span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><b>Till next time!!</b></span></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com0Singapore1.352083 103.819836000000010.8441055 103.174389 1.8600605 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-3040360075806910012019-02-16T15:40:00.000+05:302019-02-16T15:56:12.397+05:30Learning Machine Learning<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-left: 1em; margin-right: 1em;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-left: 1em; margin-right: 1em;">
</div>
<br />
<br />
<h2 style="text-align: center;">
Learning The Machine Learning</h2>
<br />
Hello good people!!<br />
<br />
It has been awfully long when we had our last chat!<br />
<h4 style="text-align: center;">
<br />Sorry Had been busy :(</h4>
<br />
Anyways, moving on.. , thought of sharing some of the learning what i have been able to get for past few months of working on various platforms and tools.<br />
<br />
This is 1st of hopefully many blogs that will be published on machine learning.<br />
<br />
<b><br /></b>
<b>LEARNING MATHSS!!!!!</b><br />
<br />
Naahh.. not going to bore you guys with loadz of Maths and stuff, there are far better websites and blogs which talk about the theory of how and why machine learning works. While we will work through the code we will talk about some of the concepts behind these elements, hopefully will give you a good insight to how things will work out!<br />
<br />
And please note!!! I myself am a student of this discipline so.. in case your system blows up.. am not responsible!<br />
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
So where do we start?</h3>
<div>
Well i though of going directly on <a href="https://www.tensorflow.org/tutorials/keras" target="_blank">Keras</a> for Deep learning, but we cannot make buildings without foundations! </div>
<div>
So will start with some of the very-very basic stuffs and then build toward more complex stuffs!</div>
<div>
<br /></div>
<div>
In order to start doing anything with Machine learning, we need to know what exactly machine needs to learn?</div>
<div>
<br /></div>
<div>
Do we need our machines to start predicting things based on history for example how will be the weather tomorrow (i wish it was so easy) or do we want our machines to categorize the data into already known blocks, for example based on the RGB values what is the closest color (assuming you have only trained the system with main color codes)?</div>
<div>
<br /></div>
<div>
Apparently these 2 methods have very complex names for itself </div>
<h3 style="text-align: center;">
</h3>
<h3 style="text-align: center;">
Prediction and Classification</h3>
<div>
<br /></div>
<div>
I know most of you want to see in the future so we will start with just that!</div>
<div>
<br /></div>
<div>
We are going to build a simple application which will read the currency values in past and try to predict whats gonna happen on a a given day in future! For the entire exercise we will be using <a href="https://www.python.org/download/releases/3.0/" target="_blank">Python3</a> as our coding tool and <a href="https://www.tensorflow.org/" target="_blank">Tensorflow</a> for Machine Learning operations!</div>
<div>
<br /></div>
<div>
For this first example we are going to use <a href="https://en.wikipedia.org/wiki/Linear_regression" target="_blank">Linear Regression</a> (fancy way of saying its a method that wants to find a straight line which can be closest to most of the data points that we have in our historical.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Linear_regression.svg/2880px-Linear_regression.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Linear regression.svg" border="0" height="263" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Linear_regression.svg/2880px-Linear_regression.svg.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3 style="clear: both; text-align: center;">
Okay So Lets get the Code out of this!</h3>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i.pinimg.com/originals/7d/e5/ad/7de5ade5beec86fd48d8365f51e05c02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Image result for enough talk lets fight" border="0" height="240" src="https://i.pinimg.com/originals/7d/e5/ad/7de5ade5beec86fd48d8365f51e05c02.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<br /></div>
<div>
You can download the historical data for currencies here, w<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">e will be using Pandas to import our csv which will be stored in ./data/<a href="https://drive.google.com/open?id=1W9XU9ARTLgYziJLP_qKWqZdd4pOGcGhZ" rel="nofollow">file.csv</a></span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: left;">
<span style="font-size: x-small;"><i><span style="font-family: "courier new" , "courier" , monospace;">import pandas as pd</span></i><i><span style="font-family: "courier new" , "courier" , monospace;">file = "./files/data.csv"</span></i></span><br />
<span style="font-size: x-small;"><i><span style="font-family: "courier new" , "courier" , monospace;">dataset = pd.read_csv(file,delimiter=',')</span></i></span><br />
<span style="font-size: x-small;"><i><span style="font-family: "courier new" , "courier" , monospace;">print(dataset.head())</span></i></span></div>
</div>
<div>
<br /></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Cleaning up data for our usage wil require dropping the non-required values (e.g. SEC Filing) also converting dates to date format and then to int for our calculations, also drop any NAN values</span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-left: 1em; margin-right: 1em;">
</div>
<br />
<div>
<span style="background-color: white;"></span><br />
<div style="font-style: italic;">
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">#If Date was in string</span></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-style: italic;">
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">dataset['Date'] = pd.to_datetime(dataset['Date'])</span></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-style: italic;">
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">dataset['Date'] = dataset.Date.apply(lambda x: x.strftime('%Y%m%d')).astype(int)</span></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-style: italic;">
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">dataset = dataset.dropna(how="any", axis=0)</span></span></div>
<span style="background-color: white;">
</span>
<div style="font-style: italic;">
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">print(dataset.head())</span></span></div>
<span style="background-color: white;">
<div style="font-style: italic;">
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div style="font-style: italic;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px; font-style: normal;">Divide your data into test and train data, also identify the X (features) and Y (Labels) In the example we will try to find how many cards were</span></div>
<div style="font-style: italic;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px; font-style: normal;"><br /></span></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>train = dataset.sample(frac=0.8,random_state=200)</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>test = dataset.drop(train.index)</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>X_train = train.drop("Value", axis=1)</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>Y_train = train["Value"]</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>X_test = test.drop("Value", axis=1)</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>Y_test = test["Value"]</i></span></div>
</div>
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: italic;">
<br /></div>
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: italic;">
<br /></div>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px; font-style: normal;">The dataset will look something like this (you can plot using</span><span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 14px;"> matplotlib</span></span><span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px; font-style: normal;">)</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="about:invalid#zClosurez" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="data:image/png;base64,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O2sdI0eO5JBDDgGSacPvueceHn30UUaNGsVee+0FwAknnMDdd9/dub9jjjkGSGomf/nLX5gyZQrjx4/nlFNOYc2ayt8Zod/2QZiZddXU1ERrayutra2MGTNms5lYBwwYQDKNXHFTgF999dW0t7ezYMECBgwYQHNzc+fU3x376dD1dT7bbbcdAG+88QZDhw5l0aJFPWzRO65BmJmRNPk89thjna8XLVrE29/+9qK2nTRpEjfccAMAs2fP7ix/6aWX2HnnnRkwYABz5szhqaee6lz29NNPc++99wLw61//mkMPPZS9996blStXsmLFCgCuuuoq3vve9272fkOGDGHUqFFcd911QFJTefjhh0v8xD1zgjCzxlTh+b7XrVvHCSecwL777svYsWNZtmwZ55xzTlHbzpgxgwsuuICxY8eyYsUKtt9+ewCOP/545s+fz5gxY7jyyisZPXp05zZ77703P/3pT9lnn3144YUX+NKXvsTAgQP55S9/yZQpUxgzZgxbbLEFp556at73vPrqq7nssssYN24c++23X2cHeCVlNt13NfRmum8ofmoN357ULHuNPN33+vXr2WabbZDE7NmzueaaawqesFeuXMkRRxzBkiVLMo+tXqf7NjPrFxYsWMD06dOJCIYOHcrll19e65AqwgmiCPPmDfHNhMysW5MnTy6pD6C5ubkqtYfech9EEXwzITPrj1yDqIJ8fR2treHbnppZXevXCSJf53O58zN1lwQK8W1Pzaye9esEkU+hSfzKSQJmZo0qsz4ISQMlPSDpYUlLJX07LR8l6X5JKyT9RtJWafnW6esV6fLmrGKrJs8Ya9Y4OibZs0SWndSvAe+PiHHAeOBwSZOA7wEXRsS7gBeAk9L1TwJeSMsvTNczM7MaySxBRGJd+nJA+gjg/cD1afks4BPp86PS16TLD1Mxk5OYmVVQOVN0f+c73+Gggw5i//33Z9q0aZ0ztra2tnLWWWcxceJE9tprL+bNm1ezz1WOTIe5SmqStAh4DrgDeBx4MSI6ZrhqA3ZPn+8OrAJIl78E7JRnn9MkzZc0v729PcvwzayOzZs3hLlz1fmYN6930313KHWKboDp06fz4IMPsmTJEv7xj39w6623du5v48aNPPDAA8yYMYNvf/vbFYmxWjJNEBGxKSLGAyOAicDoHjYpZp8zI6IlIlqGDx/e6xjNrDFl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" /></a></div>
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<br /></div>
</span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Import tensorflow and covert the dataset into the tensors</span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i></i></span></span><br />
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>import tensorflow as tf</i></span></span></div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>
</i></span></span>
<br />
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i><br /></i></span></span></div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>
</i></span></span>
<br />
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i># Converting the Panda datset to tensorflow dataset, </i></span></span></div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>
</i></span></span>
<br />
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i># this should be directly passed to the tf.estimator as input fn</i></span></span></div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>
</i></span></span>
<div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i><br /></i></span></span></div>
<span style="background-color: white;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>
<div>
num_epochs = 1000</div>
<div>
estimator_input_fn = tf.estimator.inputs.pandas_input_fn(</div>
<div>
x=X_train,</div>
<div>
y=Y_train,</div>
<div>
batch_size=100,</div>
<div>
num_epochs=num_epochs,</div>
<div>
shuffle=True,</div>
<div>
num_threads=5)</div>
</i></span></span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<div style="background-color: white; box-sizing: border-box; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
Now we have all the data we need, so lets start building the classifer, for this example we will use Keras and build a simple linear model Common question, why do you need features identified when we already provide dataset itself. You may want to see the below diagram to understand how tensorflow relates data.</div>
<div style="background-color: white; box-sizing: border-box; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-top: 1em;">
A very good resource on this topic : <a href="https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html" style="background-color: transparent; box-sizing: border-box; color: #337ab7;" target="_blank">https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html</a></div>
<div style="background-color: white; box-sizing: border-box; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; margin-top: 1em;">
<br /></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoo9GXG3z_IgR-JQ22aW_9dkp7YfPbjt5IdGejSLG9PnXk_nDz0F05SzAhVdXK0_tuPYaH9G6fCHKpuU2CGbAipSHrf4eSSEC2_mFXdbRWYuuuEWxSX4mZHjvdhiEujgs6h4kg_P_q-e4/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoo9GXG3z_IgR-JQ22aW_9dkp7YfPbjt5IdGejSLG9PnXk_nDz0F05SzAhVdXK0_tuPYaH9G6fCHKpuU2CGbAipSHrf4eSSEC2_mFXdbRWYuuuEWxSX4mZHjvdhiEujgs6h4kg_P_q-e4/s400/2.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i># Build features and setup classifier</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>dates = tf.feature_column.numeric_column(key="Date")</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>countries = tf.feature_column.categorical_column_with_vocabulary_list(</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i> key='Country', vocabulary_list=X_train.Country.unique(), default_value=0)</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>values = tf.feature_column.numeric_column(key="Value")</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i><br /></i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>feature_columns = [dates,countries]</i></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>model = tf.estimator.LinearRegressor(feature_columns=feature_columns)</i></span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="background-color: white; font-size: 14px;">Since now we have our model ready, let's train this dude!</span></span></div>
<div>
<span style="background-color: white; font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<span style="background-color: white;"></span><br />
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="background-color: white;"><i>STEPS = 1000</i></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="background-color: white;"><i>model.train(input_fn=estimator_input_fn, steps=STEPS)</i></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="background-color: white;"><br /></span></div>
<span style="background-color: white;">
</span>
<br />
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="background-color: white;"><span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Lets also build the input function for testing the model</span></span></div>
<span style="background-color: white;">
</span>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="background-color: white;"><span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></span></div>
<span style="background-color: white;">
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<div>
<i>estimator_input_test_fn = tf.estimator.inputs.pandas_input_fn(</i></div>
<div>
<i> x=X_test,</i></div>
<div>
<i> y=Y_test,</i></div>
<div>
<i> batch_size=100,</i></div>
<div>
<i> num_epochs=num_epochs,</i></div>
<div>
<i> shuffle=True,</i></div>
<div>
<i> num_threads=5)</i></div>
</div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Evaluate how the model performs on data it has not yet seen.</span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<div style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px;">
<br /></div>
<div>
<i>eval_result = model.evaluate(input_fn=estimator_input_test_fn)</i></div>
<div>
<i>print("Evaluation result: ", eval_result)</i></div>
</div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Now lets make some predictions of price and see how our model is working</span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<div>
<i>input_dict = {</i></div>
<div>
<i> "Date": [20190216],</i></div>
<div>
<i> "Country": ["India"]</i></div>
<div>
<i> }</i></div>
<div>
<i># For the sake of simplicity, we will stick to dataframes from pandas, </i></div>
<div>
<i># there is an alternative to use numpy, but dont wanna confuse with too many stuff</i></div>
<div>
<i>df = pd.DataFrame(data=input_dict)</i></div>
<div>
<i>predict_input_fn = tf.estimator.inputs.pandas_input_fn(df, shuffle=False)</i></div>
</div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Now we are ready with data so lets predict</span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>predict_results = model.predict(input_fn=predict_input_fn)</i></span></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>print("\nPrediction results:")</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i>for i, prediction in enumerate(predict_results):</i></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><i> print(prediction)</i></span></div>
</div>
</div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<h3 style="font-family: "Courier New", Courier, monospace; font-size: small; text-align: center;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></h3>
<h3 style="font-family: "Courier New", Courier, monospace; font-size: small; text-align: center;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">There! All done!!</span></h3>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Now don't panic if your predictions sucks! </span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;">Not your fault! We will need to work on lots of factors that influence the predictions. But hey!! you did loadz today... </span></div>
<div style="font-family: "Courier New", Courier, monospace; font-size: small;">
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif; font-size: 14px;"><br /></span></div>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 14px;">Hope this was useful!</span></span></div>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 14px;"><br /></span></span></div>
<div>
<span style="font-family: "helvetica neue" , "helvetica" , "arial" , sans-serif;"><span style="font-size: 14px;">Until next time.. </span></span></div>
</span></div>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com1Singapore1.352083 103.819836000000010.8441055 103.174389 1.8600605 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-40624889379402186362018-03-19T08:31:00.002+05:302018-03-19T08:31:59.665+05:30HCE: Host-based Card Emulation 2/2<div dir="ltr" style="text-align: left;" trbidi="on">
Hola!!!! Man!! this post really took its time! But glad it made it :D<br />
<br />
Welcome back, hope you have been doing good.<br />
In my last post we were discussing basics of NFC and what do HCE really means.. in case you missed it please take your time and read that first before proceeding with this blog. Else you may find yourself <b>TOTALLY LOST.</b><br />
<b><br /></b>
<b>Read it here : <a href="http://abhinavasblog.blogspot.com/2014/03/hce-host-based-card-emulation-12.html">http://abhinavasblog.blogspot.com/2014/03/hce-host-based-card-emulation-12.html</a></b><br />
<b><br /></b>
<b>Ok!! I've read it already!!!</b><br />
Kool enough, let us begin with our part 2 of understanding HCE. Out here we will discuss a bit about what it takes to build an application that will use the features of HCE.<br />
<br />
As described earlier, HCE enables application to emulate a card and perform APDU exchanges without the need of secure element.<br />
<br />
<b>Some Basic Terminologies:</b><br />
<br />
<ul style="text-align: left;">
<li>APDU : Application Protocol Data Unit, they are nothing more than data & commands in Hex (Hexadecimal) values, the POS terminal will only be able to communicate using this data format.</li>
<li>AID : Application Identifier, treat them as a name for the application that terminal wants to talk to. Again the name is coming from Terminal therefore expect it to be an APDU.</li>
</ul>
<div>
Thats it, you don't need any more terminologies to remember ;)</div>
<div>
Going forward we will keep on using these to explain things better.</div>
<div>
<br /></div>
<div>
<b>Okay, so...whats next?</b></div>
<div>
Next let's try to understand what exactly happens when you tap that card on the terminal for contactless. Why are we talking about cards??? Well, the entire concept of HCE (Host Card Emulation) is about emulating an existing behavior of Card communication with the terminal in order to leverage the existing infrastructures.<br />
<br />
<b>Okay..! what happens between Card and Terminal (a.k.a POS)</b><br />
Remember, between card and POS, the POS tries to be a hero who do all the talking but is actually the dumbest guy because all he do is asking question to the card. Whereas, the card is that cool guy who has all the right answers!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://thumbs.dreamstime.com/b/credit-card-terminal-white-background-pos-debit-near-field-communication-technology-online-banking-64717684.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="800" height="320" src="https://thumbs.dreamstime.com/b/credit-card-terminal-white-background-pos-debit-near-field-communication-technology-online-banking-64717684.jpg" width="320" /></a></div>
<br />
<br /></div>
<div>
<b><br /></b></div>
<div>
Following is their chat in human readable format:<br />
<br />
<b>POS</b>: Hey Dude, What do you support?<br />
<b>Card</b>: I support Mastercard applet with AID 1234<br />
<b>POS</b>: Hey AID 1234 please tell me if about yourself<br />
<b>Card</b>: Okay, here is some basic info in clear<br />
<b>POS</b>: Thanks, but can you also give me some secret info to complete payment, i need it for approval from your issuing bank<br />
<b>Card</b>: Sure, @#$@SFGSDF@# take this encrypted value, and share it with my issuer for approvals<br />
<b>POS</b>: Alrighty! Thanks!<br />
<br />
Now, note, that the communication between POS and Card is via APDU.<br />
<br />
With the above understanding, all you as an app developer have to do is emulate the same behavior (i.e. the behaviour of the card) from your application.<br />
i.e. You will need to interpret the APDU commands, expose and AID to which POS will talk to and generate the Card profile (i.e. the card basic info) and the Cryptogram (i.e. encrypted data for bank verification).<br />
<br />
Hope this blog was able to help you understand how things work for HCE! In order to build application using HCE you will need critical parties to come together (i.e. Issuers & Card Schemes) to provide you necessary keys and data formats in order to enable payments through your app.<br />
<br />
Food for thought: Payment apps are not the only thing that can be developed leveraging HCE!<br />
<br /></div>
<br />
<br />
<br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-36153831694447904792014-11-06T09:33:00.000+05:302014-11-06T09:33:38.494+05:30Updated Google APK's (Google Map 9.0, Calendar 5.0 & GMail and more)<div dir="ltr" style="text-align: left;" trbidi="on">
Hey All,<br />
<br />
This is a quick post to get you guys up with latest treats from Google with Materials!!<br />
<br />
Google Map (9.0) : <a href="https://drive.google.com/file/d/0B6QrxOERuIPsak1kZmM2dVlONm8/view?usp=sharing" target="_blank">Link</a><br />
<br />
Google Calendar (5.0): <a href="https://drive.google.com/file/d/0B6QrxOERuIPsNnprb2pZSzQwZVE/view?usp=sharing" target="_blank">Link</a><br />
<br />
Google Mail (5.0) : <a href="https://drive.google.com/file/d/0B6QrxOERuIPsb1p3Q0g0RmQyRkE/view?usp=sharing" target="_blank">Link</a><br />
<br />
Google Camera (2.4) : <a href="https://drive.google.com/file/d/0B6QrxOERuIPsOEFsOTR4QjBKYWM/view?usp=sharing" target="_blank">Link</a><br />
<br />
My Glass (3.4) : <a href="https://drive.google.com/file/d/0B6QrxOERuIPsUzRlSGRZamlwZkU/view?usp=sharing" target="_blank">Link</a><br />
<br />
<br />
So, there you go!! Enjoy and feel free to share!</div>
Unknownnoreply@blogger.com0Singapore1.352083 103.819836000000010.8441055 103.174389 1.8600605 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-32194615471835999502014-09-11T10:57:00.000+05:302014-09-11T10:57:48.667+05:30Google Hangouts - Voice Integration <div dir="ltr" style="text-align: left;" trbidi="on">
Hey people!<br />
<br />
Just yesterday Google announced integration of Google Voice and Google Hangouts under a single banner.<br />
And today we found that they also released 2 new Applications<br />
<br />
<br />
<ol style="text-align: left;">
<li>Google Hangouts v2.3 <a href="https://play.google.com/store/apps/details?id=com.google.android.talk" target="_blank">(Google Play Link)</a></li>
<li>Google Hangouts Dialer <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.hangoutsdialer" target="_blank">(Google Play Link)</a></li>
</ol>
<div>
<br /></div>
<div>
<b>Google Hangouts v2.3</b></div>
<div>
Its a BEAUTIFUL application, with major UI enhancements.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-GA441XzlPO4/VBExQpvUTSI/AAAAAAABZ3w/8KcOJsKSGio/s1600/Screenshot_2014-09-11-12-59-16.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-GA441XzlPO4/VBExQpvUTSI/AAAAAAABZ3w/8KcOJsKSGio/s1600/Screenshot_2014-09-11-12-59-16.png" height="320" width="180" /></a></div>
<a href="http://3.bp.blogspot.com/-mhlFxO9_IBE/VBExQtfXzoI/AAAAAAABZ3w/BGD1_d3UEJA/s1600/Screenshot_2014-09-11-12-59-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://3.bp.blogspot.com/-mhlFxO9_IBE/VBExQtfXzoI/AAAAAAABZ3w/BGD1_d3UEJA/s1600/Screenshot_2014-09-11-12-59-01.png" height="320" width="180" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSCL7w1TjmePlp3OeNLmqDh9Iwg2kBvmATzdIKE7BHYiohsJ06bQ5K7oO46O0ssb-j19XN-U-f4HQwswJZEaN9SuYB2Xovi1bEaKgpmLilon2cEgxDmWsPvMgEmjwLnmvptveHdu52ZcY/s320/hangouts1.png" imageanchor="1" style="clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSCL7w1TjmePlp3OeNLmqDh9Iwg2kBvmATzdIKE7BHYiohsJ06bQ5K7oO46O0ssb-j19XN-U-f4HQwswJZEaN9SuYB2Xovi1bEaKgpmLilon2cEgxDmWsPvMgEmjwLnmvptveHdu52ZcY/s320/hangouts1.png" /></a><br />
<br />
Hangouts Dialer will simply land you up on Hangouts caller page<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtwxTjLg8HJJRawJkIAkrsY6PDo6sUK6agHtW19JW-7Cbv5d0xfS28zrpfhUC0iodxwFoUhb3wwRFpH10Dsuv_PzfGZoDZjVGbtE2Bo0uP6jas8eKE7ancODmkohLbdo_UDnN6-1JJS7Q/s320/hangouts2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtwxTjLg8HJJRawJkIAkrsY6PDo6sUK6agHtW19JW-7Cbv5d0xfS28zrpfhUC0iodxwFoUhb3wwRFpH10Dsuv_PzfGZoDZjVGbtE2Bo0uP6jas8eKE7ancODmkohLbdo_UDnN6-1JJS7Q/s320/hangouts2.png" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWaVCdRokMMM3OeFdng6_k4D_XOGk_fRYC1IHpsu_vxazQnQDUk-eH31Y5zbKZ3PwJ0EcldVayrG2rBYOMsq9xZhufATauwZSolD3rCIqX2Ck6aMmcleV3LFhsp3rYlAvZ3GD8W9OKYFg/s320/hangouts3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWaVCdRokMMM3OeFdng6_k4D_XOGk_fRYC1IHpsu_vxazQnQDUk-eH31Y5zbKZ3PwJ0EcldVayrG2rBYOMsq9xZhufATauwZSolD3rCIqX2Ck6aMmcleV3LFhsp3rYlAvZ3GD8W9OKYFg/s320/hangouts3.png" /></a></div>
<br />
<br />
<br />
In case you are unable to download the application from Play Store, you can use the following links to download and play with these awesome apps.<br />
<br />
<div class="MsoNormal">
Hangout Updated Version 2.3: <a href="https://drive.google.com/file/d/0B6Yq_H82UOUfeTAyMkVEM19CSk0/edit?usp=sharing" target="_blank">Hosted Link</a><o:p></o:p></div>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Hangout Dialler: <a href="https://drive.google.com/file/d/0B6Yq_H82UOUfdWtHWmV2VE5JRVU/edit?usp=sharing" target="_blank">Hosted Link</a><o:p></o:p></div>
<br />
You can get more intesive details about the updates from<a href="http://googleblog.blogspot.sg/2014/09/call-me-maybe-introducing-free-voice.html" target="_blank"> Google Official channel blog</a><br />
<br />
Happy Talking :)<br />
<br />
<br />
<br />
</div>
Unknownnoreply@blogger.com0Singapore1.352083 103.819836000000010.8441055 103.174389 1.8600605 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-40902186123739063892014-04-11T13:09:00.002+05:302017-01-10T00:41:17.320+05:30Animated GIF ImageView Library for Android<div dir="ltr" style="text-align: left;" trbidi="on">
Okay Good People!!!<br />
Announcing today a brand new library which is intended to help you out with displaying Animated GIF's within your applications.<br />
<br />
<b>WHY A NEW LIBRARY?</b><br />
As an Android developer you would have noticed that Android has not provided support for Animated GIF's as a component.<br />
Therefore in order to show an Animated GIF's we usually end up using WebView in application which has its own disadvantages (Memorish Isuuess!!!).<br />
<br />
THAY THE LIBRARY!<br />
<a href="https://code.google.com/p/giflib/">https://github.com/abhinavasr/giflib</a><br />
<br />
<i><b>Screenshot of Sample Application</b></i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiDaVF0YKhdfNf9bkYLl9mOtAzZZoh1IbPhUgTwhqXWR3F_wDHSHJrcIZnNm8-yWNHJ_V9EZxa7T9rJbu3qZ9htGulA_Uj2ur_9PUHnyVDfBW6xj_FEuF7GqRBkXkC9IIOhULA4ksm8PI/s1600/Screenshot_1970-01-02-09-59-43.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu1TTqp8DRf_CjhkxLHVlWuTmnqCpE5ueOnKN0upSFX0WKZZhvlk3gmj8wDJN22Z6MiZWf4USMf0_uGGW3MJRUnyJoXcjoiqJnjzXqIZqHPupbvKvO0bjcncXBgP2jNq4HWisFrwSIIxM/s1600/Screenshot_1970-01-02-09-59-55.png" imageanchor="1" style="clear: right; display: inline !important; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu1TTqp8DRf_CjhkxLHVlWuTmnqCpE5ueOnKN0upSFX0WKZZhvlk3gmj8wDJN22Z6MiZWf4USMf0_uGGW3MJRUnyJoXcjoiqJnjzXqIZqHPupbvKvO0bjcncXBgP2jNq4HWisFrwSIIxM/s1600/Screenshot_1970-01-02-09-59-55.png" width="180" /></a><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiDaVF0YKhdfNf9bkYLl9mOtAzZZoh1IbPhUgTwhqXWR3F_wDHSHJrcIZnNm8-yWNHJ_V9EZxa7T9rJbu3qZ9htGulA_Uj2ur_9PUHnyVDfBW6xj_FEuF7GqRBkXkC9IIOhULA4ksm8PI/s1600/Screenshot_1970-01-02-09-59-43.png" width="180" /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0xOE9L_uVZVOKxAshRUHAJkIYAHQFnk1p09-XKkFTxXrbaBYXmj_E_BfQ5ITR_J5jtvqEJHXJAd48iBg6ie5b7AVTFKtyWftZP4yXoLsBYlV1vRycRuG2SsFzTvcA0VMVfOwEainNgrI/s1600/Screenshot_1970-01-02-09-59-49.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0xOE9L_uVZVOKxAshRUHAJkIYAHQFnk1p09-XKkFTxXrbaBYXmj_E_BfQ5ITR_J5jtvqEJHXJAd48iBg6ie5b7AVTFKtyWftZP4yXoLsBYlV1vRycRuG2SsFzTvcA0VMVfOwEainNgrI/s1600/Screenshot_1970-01-02-09-59-49.png" width="180" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The Sample application demonstrate that the Library Can handle both regular Image (PNG/JPG) and Animated GIF on same View. Therefore giving developer the flexibility to use Image/GIF without making any changes to his/her code base.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<u><b>Sample Implementation:</b></u></div>
<div class="separator" style="clear: both; text-align: left;">
<u><b>layout.xml</b></u></div>
<div class="separator" style="clear: both; text-align: left;">
<u><b><br /></b></u></div>
<div class="separator" style="clear: both;">
<com .abhi.gif.lib.animatedgifimageview="" p=""></com></div>
<div class="separator" style="clear: both;">
android:id="@+id/animatedGifImageView"</div>
<div class="separator" style="clear: both;">
android:layout_width="match_parent"</div>
<div class="separator" style="clear: both;">
android:layout_height="wrap_content"</div>
<div class="separator" style="clear: both;">
android:layout_alignParentLeft="true"</div>
<div class="separator" style="clear: both;">
android:layout_alignParentRight="true"</div>
<div class="separator" style="clear: both;">
android:layout_above="@+id/button1"</div>
<div class="separator" style="clear: both;">
</div>
<div class="separator" style="clear: both;">
android:layout_below="@+id/textView1" /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<u><b><br /></b></u></div>
<div class="separator" style="clear: both; text-align: left;">
<u><b>Activity.java</b></u></div>
<div class="separator" style="clear: both;">
animatedGifImageView = ((AnimatedGifImageView)findViewById(R.id.animatedGifImageView));</div>
<div class="separator" style="clear: both;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>animatedGifImageView.setAnimatedGif(R.raw.animated_gif,</div>
<div class="separator" style="clear: both;">
</div>
<div class="separator" style="clear: both;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>TYPE.FIT_CENTER);</div>
<div class="separator" style="clear: both;">
That's It!</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
AnimagedGifImageView supports some basic parameters to give you better control of image resizing (If required) There fore you can pass :</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>FIT_CENTER</b>: Stretch and fit image while maintaining aspect ratio</div>
<div class="separator" style="clear: both;">
<b>STREACH_TO_FIT</b>: Stretch Image irrespective of aspect ratio</div>
<div class="separator" style="clear: both;">
<b>AS_IS</b>: Place the image without any manipulations.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Hope you will use the library and make your life easier :)</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</div>
Unknownnoreply@blogger.com17Singapore1.352083 103.819836000000010.84410649999999987 103.174389 1.8600595 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-71908603673017545242014-03-17T20:53:00.000+05:302014-03-17T20:53:26.132+05:30HCE: Host-based Card Emulation 1/2<div dir="ltr" style="text-align: left;" trbidi="on">
Its been quite long since my last post...<br />
Have been quite busy exploring the possibilities with various new technologies :) It's about time that the learnings must be shared.<br />
<br />
In this post i will try to share some simple and basic details about much talked HCE.<br />
<br />
<b>Q> What is HCE?</b><br />
A> Host-Based Card Emulation<br />
<br />
<b>Er... whats that??</b><br />
Before we talk about <b>HCE (Host-Based Card Emulation)</b> we must understand what is <b>CE (Card Emulation)</b><br />
<br />
Card Emulation is as it says emulation of a card (CreditCard/ ID Card/ Loyalty Card / any card) over NFC interface of a mobile phone.<br />
<br />
In this mode a mobile NFC can exchange APDU (Data) with the a POS (Payment Terminals) or any other Terminal (eg. Security Machine on Doors or a Time punching machine for your office )<br />
<br />
<b>Alright!! I understand NFC but whats Card Emulation?</b><br />
A card in this refers to a an environment which is created with the help of secure element, and applets.<br />
<br />
Woaahhh 2 NEW TERMS!!!<br />
<b>Secure Element: </b> In simplest words.. Its a memory + processor + Mini OS which is out of phone OS, is highly restricted for access and is believed to be non-hackable!<br />
<b>Applets: </b>Nothing more than small Java Programs which can run on this Mini OS of Secure Element. Which communicates based on Hexadecimal Commands also known as APDU.<br />
<br />
So when you use your credit card or even a sim card remember "YOU GOT THE POWER" of secure element in your hands. Yeah that a freaking complete Operating system which is super secure in your hand.<br />
<br />
<b>Ok.. so??</b><br />
So Card Emulation basically says that in order to communicate with this Card (Secure Element + Applets) the Phone NFC will accept the commands, will send these commands to Card residing somewhere in the phone and then will forward the responses generated from this Card over NFC interface back to the terminal.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://developer.android.com/images/nfc/secure-element.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://developer.android.com/images/nfc/secure-element.png" height="288" width="320" /></a></div>
<br />
<br />
Now to ease things up Card can be present in 3 of these location<br />
1. Embedded Secure Element<br />
2. SDCard based Secure Element<br />
3. UICC (SIM Card)<br />
<br />
<b>Kool!! then why do we need HCE?</b><br />
The biggest advantage is also the biggest disadvantage for Secure Element, being highly restricted, any addition of deletion of data needs heck of approvals from the provider of these.<br />
For example: In case of UICC based Secure Element, only the MNO (mobile Network Operator) who owns a SIM card is authorised to put your CreditCard data inside the secure element, BUT, the CreditCard belongs to a Issuer (Bank) therefore in-order to put one simple CreditCard inside a secure element you need Bank and MNO to come together and work together. No wonder you don't see many application which uses any of these technologies.<br />
<br />
Now with HCE, there is no need for Secure Element, I mean you can work even without them.<br />
Now the data can directly be sent and received by an application, your own phone application.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://developer.android.com/images/nfc/host-based-card.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://developer.android.com/images/nfc/host-based-card.png" height="288" width="320" /></a></div>
<br />
Next we will get in more details of Implementation... To be Continued...<br />
<br />
<b><br /></b>
<br /></div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-9204768623223209518.post-54537204352255507862013-11-22T08:47:00.001+05:302013-11-22T08:54:58.721+05:30Barcode Scanner and Generator (Version 2)<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKvzMiq1hQM7w75urXzJZO9JkODnGD4BhkDIrCQLg7aumMuuW1CGfNKqrUJaGuhUk4LV4BpVvavMrnjsnSPIDcLwHu27mpMW-0zjkm3qhZYUTJ0XPvLrkIw9c7Xep_L6YUQ8dBmkVUxU/s1600/easy+pocket.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlKvzMiq1hQM7w75urXzJZO9JkODnGD4BhkDIrCQLg7aumMuuW1CGfNKqrUJaGuhUk4LV4BpVvavMrnjsnSPIDcLwHu27mpMW-0zjkm3qhZYUTJ0XPvLrkIw9c7Xep_L6YUQ8dBmkVUxU/s1600/easy+pocket.jpg" /></a></div>
<br />
<br />
On November 4th, 2012 we launched QR Code Scanner and Generator V1<br />
<br />
(<a href="http://abhinavasblog.blogspot.sg/2012/11/creating-your-qr-code-scanner-and.html">http://abhinavasblog.blogspot.sg/2012/11/creating-your-qr-code-scanner-and.html</a>)<br />
<br />
<br />
<div style="text-align: center;">
<b><span style="color: #990000;">THANK YOU FOR YOUR SUPPORT TILL DATE</span></b></div>
<div style="text-align: center;">
<b><span style="color: #990000;"><br /></span></b></div>
<br />
Since then we made numerous progres on the library and updated it time and again.<br />
<br />
Time has now come to welcome better smarter version of BarCode fragment library.<br />
<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">Please welcome Barcode Fragment Lib V2</span></div>
<br />
The library is located at <a href="https://code.google.com/p/barcodefraglibv2/">https://code.google.com/p/barcodefraglibv2/</a> .The library has better features and more detailed samples.<br />
<br />
Unlike previous versions you can now simply add a jar in your app and start using the complete scanner functionality.<br />
You can download the jar's from here: <a href="https://drive.google.com/file/d/0B6Yq_H82UOUfWmNDLUY1V19DaDQ/edit?usp=sharing" target="_blank">BarcodeLibraryFragment</a> and <a href="https://drive.google.com/file/d/0B6Yq_H82UOUfaGRmUzlGTWwxSlU/edit?usp=sharing" target="_blank">Barcode Core</a> (Please note both jars are mandatory)<br />
<br />
Library now also support some added barcode types (e.g <a href="http://en.wikipedia.org/wiki/Aztec_Code" target="_blank">Aztec</a>, <a href="http://en.wikipedia.org/wiki/Data_Matrix" target="_blank">Datamatrix</a>).<br />
<br />
Please read the wiki located at <a href="https://code.google.com/p/barcodefraglibv2/wiki/HowTo">https://code.google.com/p/barcodefraglibv2/wiki/HowTo</a> to start using the library.<br />
<br />
There is a sample implementation for easier understanding of usage at : : <a href="https://code.google.com/p/barcodefraglibv2/wiki/SampleImplementation">https://code.google.com/p/barcodefraglibv2/wiki/SampleImplementation</a><br />
<br />
<b>I am also looking for the contributors for maintaining the library. Please let me know if you are interested to enhance this library.</b></div>
Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-9204768623223209518.post-40860821610864565732013-11-08T10:26:00.001+05:302013-11-08T10:28:54.692+05:30Install Hangouts 2.0.122<div dir="ltr" style="text-align: left;" trbidi="on">
Google has released Hangouts 2 which gives you additional benefits of sending and receiving SMS right from your hangout application.<br />
<div>
<br /></div>
<div>
Hence, the over all experience of application is much more smoother and definitely richer.</div>
<div>
<br /></div>
<div>
You can download the file from <a href="http://wgeekz.com/test/hangout.zip" target="_blank">here</a></div>
<div>
<br /></div>
<div>
Features:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwm7xGdwz57mr5xHzjgY7e1BgmepzsSDC6J5vwxT-vzCPtzDQp68f7PpMBMQ_jFm3CGRtdQdtsvEwlMp1oGh5h7feu1IdfwJ0zQGjsGAB-aDN_r7CWqhxWHARup30nRe1R_3CvxS7PH_o/s1600/nexusae0_1101_thumb.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx_S1bbwCn-9Vkte3ZtLhCokrMc-GfXCDZkSiD7xcrWtTAlq2VEPEVObCrs5CkkLSW1uS8JhGeL5RsVA-hUKLY8jz0T3TUDrJ23IETImwWyuPA-jILadioMRSKuMzOXfsPH5OXCUjmvik/s1600/nexusae0_2101_thumb.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx_S1bbwCn-9Vkte3ZtLhCokrMc-GfXCDZkSiD7xcrWtTAlq2VEPEVObCrs5CkkLSW1uS8JhGeL5RsVA-hUKLY8jz0T3TUDrJ23IETImwWyuPA-jILadioMRSKuMzOXfsPH5OXCUjmvik/s320/nexusae0_2101_thumb.png" width="191" /></a><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwm7xGdwz57mr5xHzjgY7e1BgmepzsSDC6J5vwxT-vzCPtzDQp68f7PpMBMQ_jFm3CGRtdQdtsvEwlMp1oGh5h7feu1IdfwJ0zQGjsGAB-aDN_r7CWqhxWHARup30nRe1R_3CvxS7PH_o/s320/nexusae0_1101_thumb.png" width="191" /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbp1ahKMeZ83MY-9qAr5AwpS3V5grbUtvo_pMcOA_dFGFeTJ43uDJslZaRU1x-0UEt7k4gbwF4E_yMkNQL_Q9dlp0zKma8K5aVXLD49V2825GpC-MF9htfW3v9mmq9rWz1L3m5SOpfOC0/s1600/nexusae0_animated-gifs_thumb_thumb.gif" imageanchor="1" style="clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbp1ahKMeZ83MY-9qAr5AwpS3V5grbUtvo_pMcOA_dFGFeTJ43uDJslZaRU1x-0UEt7k4gbwF4E_yMkNQL_Q9dlp0zKma8K5aVXLD49V2825GpC-MF9htfW3v9mmq9rWz1L3m5SOpfOC0/s320/nexusae0_animated-gifs_thumb_thumb.gif" width="192" /></a></div>
<br />
<div>
<br /></div>
<div>
The new Hangout first got released as Version 2.0.12 which was having some issues with Video chats but the current version i.e Version 2.0.122 is expected to resolve that.</div>
<div>
Currently the APK is only for Nexus 5 in the Android Market but it ain't gonna stop you from getting it ;)</div>
<div>
<br /></div>
<div>
Lemme know about your experience with this version.</div>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-61647686572850380272013-11-04T15:19:00.001+05:302013-11-04T15:19:07.765+05:30Setup Android Studio On Ubuntu 13.10<div dir="ltr" style="text-align: left;" trbidi="on">
Android Studio is still in its early development days. Hence, it's still not completely polished.<br />
<br />
Yet again its one of the most powerful tools out there in the market which can be very useful if you start using them :D<br />
<br />
<br />
At this point of time if you want to start Android Studio, you need to run a shell file every time, which no doubt is not so user friendly and may become frustrating as you always have a Terminal window associated to it, resulting multiple open windows on your desktop.<br />
<br />
In my previous post i told you guys how to setup android and other things on Ubuntu system (Including java)<br />
<br />
In this post ill try to help you setup Android Studio.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhigboHxPoqDqm7prpkPlO8uAH0gLCnIod1-049yFNdkVT2CnRnJ5DHLUQozgIX6rvGFDHQ9WTPIENuYAV8UizatQMHQLFloTNkdM8AqzW_xKdl-0MPNuGK_PWKN2wd0u6X9yrCzh3wj40/s1600/android+Studio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhigboHxPoqDqm7prpkPlO8uAH0gLCnIod1-049yFNdkVT2CnRnJ5DHLUQozgIX6rvGFDHQ9WTPIENuYAV8UizatQMHQLFloTNkdM8AqzW_xKdl-0MPNuGK_PWKN2wd0u6X9yrCzh3wj40/s640/android+Studio.png" width="640" /></a></div>
<br />
Just follow below:<br />
<br />
<ol style="text-align: left;">
<li>Start Terminal</li>
<li>$ sudo -i (It will ask for password)</li>
<li>cd /usr/share/applications</li>
<li>nano AndroidStudio.desktop</li>
<li>Enter following in the file</li>
</ol>
<div>
<blockquote class="tr_bq">
[Desktop Entry]<br />Type=Application<br />Terminal=false<br />Name=Android Studio<br />Icon=<span style="color: red;"><path-to-icon-idea .png=""><br /></path-to-icon-idea></span>Exec=<span style="color: red;"><path-to-studio .sh=""></path-to-studio></span></blockquote>
<div>
<br /></div>
<div>
That's it !! you are done!</div>
<div>
<br /></div>
<div>
Now simply go in your Applications you will find Android Studio application which you can click and start anytime you like. You can also drag it down to quick launcher.</div>
<div>
<br /></div>
<div>
Hope it helped!</div>
<div>
<br /></div>
</div>
</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-9204768623223209518.post-52111434119854425972013-10-22T09:09:00.001+05:302013-10-22T13:48:30.173+05:30Working With Ubuntu 13.04 and 13.10 Java JDK/JRE ,Chrome and Android<div dir="ltr" style="text-align: left;" trbidi="on">
Hi All,<br />
<br />
Recently i updated my Linux system to 13.10 and to my greatest pleasure and frustration i ran into couple of issues :D<br />
<br />
Here is a brief of what i faced and how it got resolved, hope this will help you get your stuff too! :)<br />
<br />
In this post we will install Chrome, Instal Java7 and setup Android SDK. So lets begin<br />
<b><br /></b>
<b>INSTALLING GOOGLE CHROME</b><br />
Well i am a great fan of Google Chrome but was upset with the fact that Google has not yet updated their application to support latest libraries, thus when you install Ubuntu 13.04 and above you will find that there are couple of dependencies that are unsatisfied.<br />
<br />
Well there ain't much you need to do! :)<br />
<br />
Install this depending on your OS installation<br />
<br />
For 64 bit Systems:<a href="http://launchpadlibrarian.net/119461136/libudev0_175-0ubuntu13_amd64.deb" target="_blank"> libudev064bit.deb</a><br />
For 32 bit Systems:<a href="http://launchpadlibrarian.net/119461148/libudev0_175-0ubuntu13_i386.deb" target="_blank"> libudev032bit.dev</a><br />
<br />
Once above is installed you can simply download the application from google and run the deb file. You should be able to install Chrome now :)<br />
<br />
<br />
<b>INSTALLING JAVA</b><br />
This has been a very prolonged issues as Oracle as not been able to make its way in Canonical repositories andUbuntu has been pushing openjdk and other open Java.<br />
Again if you are a developer the you will be better off with Oracle Java only.<br />
<br />
No worries simply follow the following steps:<br />
<br />
<ol style="text-align: left;">
<li>First remove openjdk from your system: <i><b><span style="color: red;">sudo apt-get purge openjdk*</span></b></i></li>
<li>Now install oracle java 7 in ubuntu </li>
</ol>
<ul style="text-align: left;">
<li>sudo add-apt-repository ppa:webupd8team/java</li>
<li>sudo apt-get update</li>
<li>sudo apt-get install oracle-java7-installer</li>
<li>Follow the installation steps</li>
</ul>
That its now you can check installed java version by typing :<i><span style="color: red;"> java -version</span></i><br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>CONFIGURING ANDROID SDK</b></div>
<div>
Even if you have downloaded Android SDK you will not be able to run <span style="color: red;">adb </span>you will get follwoing issue all the time. <span style="color: orange;"><span class="str">error=2 No such file or directory'</span><span class="pln"> </span><span class="kwd">while</span><span class="pln"> attempting to </span><span class="kwd">get</span><span class="pln"> adb version </span><span class="kwd">from</span></span></div>
<div>
<span style="color: orange;"><span class="kwd"><br /></span></span></div>
<div>
<span class="kwd">This is due to missing ia32-lib which is not available for 13.04 and above hence you need to individual install libraries required for adb</span></div>
<div>
<span class="kwd">Type following command</span></div>
<div>
<span class="kwd"><br /></span></div>
<div>
<span class="kwd"></span><br />
<div style="text-align: left;">
<span class="kwd"><code><span style="color: red; font-family: Verdana, sans-serif;"><i><span class="pln">sudo apt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln"> install libc6</span><span class="pun">-</span><span class="pln">i386 lib32stdc</span><span class="pun">++</span><span class="lit">6</span><span class="pln"> lib32gcc1 lib32ncurses5 </span></i></span></code></span><span style="background-color: #eeeeee; font-size: 14px; line-height: 18px;"><span style="color: red; font-family: Verdana, sans-serif;"><i>lib32z1</i></span></span></div>
<span class="kwd">
<pre class="default prettyprint prettyprinted"><code><span style="color: red; font-family: Verdana, sans-serif;"><i><span class="pln">
</span></i></span></code></pre>
<pre class="default prettyprint prettyprinted"><code><span class="pln"><span style="font-family: Times, Times New Roman, serif;">And you are done :)</span></span></code></pre>
<pre class="default prettyprint prettyprinted"><code><span class="pln"><span style="font-family: Times, Times New Roman, serif;">Hope you have been able to resolve all your issuesand now enjoy your Linux</span></span></code></pre>
<pre class="default prettyprint prettyprinted"><code><span class="pln">
</span></code></pre>
<pre class="default prettyprint prettyprinted"><code><span class="pln">
</span></code></pre>
<pre class="default prettyprint prettyprinted"><code><span class="pln">
</span></code></pre>
</span></div>
<pre class="default prettyprint prettyprinted"><code><span class="pln"></span></code></pre>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-9204768623223209518.post-72068581261436417132013-10-17T17:04:00.000+05:302013-10-17T17:04:30.420+05:30Sync and Backup For Free!!!<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
I have been always wondering if i could get some backing up solution which can help me to save and sync files between my computers and Mobile devices.</div>
<div>
<br /></div>
<div>
Above all i wanted all these photos and files to be PRIVATE!!! i don't want them to be saved on a remote server!!!</div>
<div>
<br /></div>
<div>
I believe this is a generic requirement and is applicable to every one out there!</div>
<ul style="text-align: left;">
<li>Ever wondered how to backup photos from your Mobile phone in full resolution </li>
<li>Wanted to synchronize files between your own computers</li>
<li>Wanted to share files between friends of HUGE size</li>
<li>Wanted the files to be secure</li>
<li>Wanted all the above for free for LIFETIME??</li>
</ul>
<div>
<b>HOW TO GET IT ALL??</b></div>
<div>
<b>Simply follow the below</b></div>
<div>
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRgpRJi6fOxrv7x9BVvzxmoL3tgA4ZwglAMoHm-deOFvEO6lwc8xJuxti6fx8uAvvL2B4sfTVP5gQkcIk2kKcQaq_y3-SUaJCoKUNUPSh8BYxOfnPxEetP68Qv25jaXhbFvaW27xtlrAA/s1600/c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRgpRJi6fOxrv7x9BVvzxmoL3tgA4ZwglAMoHm-deOFvEO6lwc8xJuxti6fx8uAvvL2B4sfTVP5gQkcIk2kKcQaq_y3-SUaJCoKUNUPSh8BYxOfnPxEetP68Qv25jaXhbFvaW27xtlrAA/s400/c.png" width="400" /></a></div>
<div style="text-align: left;">
<span style="font-family: Times, Times New Roman, serif;">Install BitTorrent Sync : <a href="http://labs.bittorrent.com/experiments/sync.html">http://labs.bittorrent.com/experiments/sync.html</a><br />Its available for all the platforms so you should be just fine</span></div>
<div style="text-align: left;">
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5iL5b8cHNYksYVDUo-C8yvrXnjw072xb4WD13JAulgFZxK6wvFFvHjFn5cBfshQjYvdKvJR-qIcmJIhW_rOqMyM8nJGSVsZDJ4yA0tx6csWHrZ8qFXMh_7DPz2-R60YfHBGG8-AkihNs/s1600/c+(1).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5iL5b8cHNYksYVDUo-C8yvrXnjw072xb4WD13JAulgFZxK6wvFFvHjFn5cBfshQjYvdKvJR-qIcmJIhW_rOqMyM8nJGSVsZDJ4yA0tx6csWHrZ8qFXMh_7DPz2-R60YfHBGG8-AkihNs/s320/c+(1).png" width="279" /></a></div>
<div style="text-align: left;">
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Times, Times New Roman, serif;">Steps of Setup:</span></div>
<div style="text-align: left;">
<ol style="text-align: left;">
<li><span style="font-family: Times, 'Times New Roman', serif;">Install the application on all your devices</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">Depending on the device (Mobile / Computer) you will get option to choose folder for Syncing/Sending/Backing up your files</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">Once selected you will be provided a code.</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">Simply enter the code in any other device you want to sync with</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">You are Done!!!</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">You can reffer to </span><a href="http://labs.bittorrent.com/experiments/sync/mobile.html">http://labs.bittorrent.com/experiments/sync/mobile.html</a> for more details of installation.</li>
</ol>
</div>
<div>
Cheers!!</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-83789430387268824922013-09-30T13:15:00.001+05:302013-09-30T13:15:10.831+05:30Android's Device Management<div dir="ltr" style="text-align: left;" trbidi="on">
Hey There!!!<br />
<br />
i know it has been quite long since i updated you guys with any relative news..<br />
<br />
APOLOGIES.. :)<br />
<br />
Most of us are holding Super Charged Android devices, its just that few of us know how to get the best out of it.. :D<br />
So today i'll try to help you good guys out with one neat trick which you can use to super secure your android devices.<br />
<br />
<h2 style="text-align: left;">
<b>DEVICE ADMINISTRATION</b></h2>
<b>Relax !!!!!!</b><br />
We will setup and will show you a pro in using device admin (Administration) without throwing away a sweat!!!!<br />
<h2 style="text-align: left;">
<br /><b>BUT WHYYY??</b></h2>
Using device administration you can do following<br />
<br />
1. Ring your device remotely<br />
2. Locate your device<br />
3. Lock your phone and Change password<br />
4. Wipe your device remotely<br />
<i><br /></i>
<i>And no need for <b>ANY</b> third party apps (Non Google App) to manage and secure your mobile phone.</i><br />
<br />
Just follow these 3 Steps<br />
1. Click on <b>Google Settings Application</b><br />
<b><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDlk8Qh_J6_fdw2qZs3WgWYOxOuLk67Q_Qy7OIrx5Ckx8EB1uGxIc6zORpz22cGWYOS6whKjMUDo5TdsfYOkf_wCke2Blupk_Cnx7_ICYK4N4PXLqxvXmKt1wKyX16aZDkmIfknaBj-Lw/s1600/Screenshot_2013-09-30-15-12-22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDlk8Qh_J6_fdw2qZs3WgWYOxOuLk67Q_Qy7OIrx5Ckx8EB1uGxIc6zORpz22cGWYOS6whKjMUDo5TdsfYOkf_wCke2Blupk_Cnx7_ICYK4N4PXLqxvXmKt1wKyX16aZDkmIfknaBj-Lw/s320/Screenshot_2013-09-30-15-12-22.png" width="180" /></a></div>
<b><br /></b>
2. Click on <b>Android Device Manager</b><br />
<b><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ8G964rI1eB-Gs1TN7i6yBNafBnIYkX7DFeC32XGeXInN6r2ph4Zj-3hdzGzOSFr_s-abHp05LW3X1mEdujEioD3_3PtMrFMD8Ta2qRaCgOIf2XwBZLIiGhqybnPy72fU11hcoAecSr0/s1600/Screenshot_2013-09-30-15-30-26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ8G964rI1eB-Gs1TN7i6yBNafBnIYkX7DFeC32XGeXInN6r2ph4Zj-3hdzGzOSFr_s-abHp05LW3X1mEdujEioD3_3PtMrFMD8Ta2qRaCgOIf2XwBZLIiGhqybnPy72fU11hcoAecSr0/s320/Screenshot_2013-09-30-15-30-26.png" width="180" /></a></div>
<b><br /></b>
3. Check on <b>Both Check boxes</b><br />
<b><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vLjWVDtZrZg_epqGe62INmrtMJRF1v8rKiW4wwlFAiXxwcxhkBbNLQo9080KyWN4IKuFOsVDzdCWz_t1oqIGpfFmtpLYN7rQdy62oAjQl4hF1enyK4wya_e7q9wr_nbQ7kFgICSSgmw/s1600/Screenshot_2013-09-30-15-12-33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vLjWVDtZrZg_epqGe62INmrtMJRF1v8rKiW4wwlFAiXxwcxhkBbNLQo9080KyWN4IKuFOsVDzdCWz_t1oqIGpfFmtpLYN7rQdy62oAjQl4hF1enyK4wya_e7q9wr_nbQ7kFgICSSgmw/s320/Screenshot_2013-09-30-15-12-33.png" width="180" /></a></div>
<b><br /></b>
4. You will be asked for confirmation on <b>Android Device Manager</b> screen, Click on <b>Activate</b><br />
<b><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyRcbYAYL0UlDQ9GfFJTn8ROMEJW4OL25JVPKbrVewPReGrCiM9PATgQo1NDuuc2IWeY4hIbp4GvTxQlQ9ZUyrkx_mrqAP5EkFhFWX-msxNG79CwyPuqF04kHjc8SayS1I_7JI8DzKHIc/s1600/Screenshot_2013-09-30-15-12-44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyRcbYAYL0UlDQ9GfFJTn8ROMEJW4OL25JVPKbrVewPReGrCiM9PATgQo1NDuuc2IWeY4hIbp4GvTxQlQ9ZUyrkx_mrqAP5EkFhFWX-msxNG79CwyPuqF04kHjc8SayS1I_7JI8DzKHIc/s320/Screenshot_2013-09-30-15-12-44.png" width="180" /></a></div>
<br />
5. Once clicked you will be back on Google Settings Screen, just close the app<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjugWQ3XiCyhan0JvDUa0GeyUeSmJRFU9N-Azpj7Oq7yhY_f_GdqLtJbYF19YgxgxgXvD4MqCd9AqEq-YWlvmezcIP8sDK0ZllbNk3NdDfIhRdJN5v6Gc9PyfOMkrNT9zlMvHgCnEZvobI/s1600/Screenshot_2013-09-30-15-12-33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjugWQ3XiCyhan0JvDUa0GeyUeSmJRFU9N-Azpj7Oq7yhY_f_GdqLtJbYF19YgxgxgXvD4MqCd9AqEq-YWlvmezcIP8sDK0ZllbNk3NdDfIhRdJN5v6Gc9PyfOMkrNT9zlMvHgCnEZvobI/s320/Screenshot_2013-09-30-15-12-33.png" width="180" /></a></div>
<br />
THAT's IT!! You are done!!! <br />
<br />
Now if you want to play around simply click on this link<br />
<a href="https://www.google.com/android/devicemanager?hl=en&u=0">https://www.google.com/android/devicemanager?hl=en&u=0</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicfwKGkrwYc0ZcQhvFuBoBVEXkui9a48Nxfa2XRAGwHfLRsk9VVgb_icV1eo0yzpwvRxPBMADG5d3AKSrXrh7_CGFZHpGFim6U4Y9fz8zRAD4kEprJC7213h4tCTtov0UdkjQrjI4mvfM/s1600/c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicfwKGkrwYc0ZcQhvFuBoBVEXkui9a48Nxfa2XRAGwHfLRsk9VVgb_icV1eo0yzpwvRxPBMADG5d3AKSrXrh7_CGFZHpGFim6U4Y9fz8zRAD4kEprJC7213h4tCTtov0UdkjQrjI4mvfM/s640/c.png" width="640" /></a></div>
<br />
<br />
<h3 style="text-align: left;">
<b><span style="font-size: large;">ENJOY!!!!</span></b></h3>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-73178947830192226952013-06-26T16:16:00.000+05:302013-06-26T16:16:05.377+05:30Browsing through Android Source Code<div dir="ltr" style="text-align: left;" trbidi="on">
Many time we want to understand how are Android API's implemented,<div>
For example when you are using a API and want to understand the implementation of that api, you certainly don't want to browse through entire Android source to check what the implementation, it just kills the fun.<br /><div>
<br /></div>
<div>
<b>From</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWU525z0CCbopW9LGcxumL9LYfoIbtMxS_mmx8aGVuOYckQ5SJJlSMiW2h-YvqsAZHR2SmOUc7O4SC2IKctysh2TSdQkXKJp3D22xKtfU2NMJHQdguT69nHQ-6hUAzYc2MxpwGjHEm5Ps/s1600/image_no_source.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWU525z0CCbopW9LGcxumL9LYfoIbtMxS_mmx8aGVuOYckQ5SJJlSMiW2h-YvqsAZHR2SmOUc7O4SC2IKctysh2TSdQkXKJp3D22xKtfU2NMJHQdguT69nHQ-6hUAzYc2MxpwGjHEm5Ps/s400/image_no_source.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<b>To</b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmtNb1-rtyDvKF0vDjMSyBl_knPz2Zf9q0-pzRNRe9mYYPRb1StdqMQY6Bi6AP094sfCC3k1QksLNkvHKIwtDQ-DPYanl3Mg6ooFNkPotJzmd9bHEeBtwE9Wdy7eMclTjv8ArwzBc6Lc/s1600/image_with_source.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmtNb1-rtyDvKF0vDjMSyBl_knPz2Zf9q0-pzRNRe9mYYPRb1StdqMQY6Bi6AP094sfCC3k1QksLNkvHKIwtDQ-DPYanl3Mg6ooFNkPotJzmd9bHEeBtwE9Wdy7eMclTjv8ArwzBc6Lc/s400/image_with_source.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Here are the simple steps to understand how to do this!</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div>
<b><br /></b></div>
<div>
<b>WHAT ALL IS REQUIRED?</b></div>
<div>
To accomplish this you need 2 things</div>
<div style="text-align: left;">
<ol style="text-align: left;">
<li>Eclipse</li>
<li>Internet connection</li>
</ol>
<b>STEPS:</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Install this plugin in your eclipse <span style="background-color: white; border-bottom-style: dashed; border-width: 0px 0px 1px; color: blue; font-family: Verdana; font-size: 13px; line-height: 19px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a class="external" href="http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update/" rel="nofollow" style="border-bottom-style: dashed; border-width: 0px 0px 1px; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update/">http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update/</a></span></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEits6PQO7v4bskpGyAS4yxXG3MJ3eewcPHeLUAhlrBxby4sFfVC7KGh8lGNAQky0FndC0nuFtdFCudG05klfT01aFUT4HuYr0bdM1yDrkfp5nmmcPAAyi5oecK6WmWy_p27edwQFTdKZ40/s1600/install.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEits6PQO7v4bskpGyAS4yxXG3MJ3eewcPHeLUAhlrBxby4sFfVC7KGh8lGNAQky0FndC0nuFtdFCudG05klfT01aFUT4HuYr0bdM1yDrkfp5nmmcPAAyi5oecK6WmWy_p27edwQFTdKZ40/s400/install.jpg" width="400" /></a></div>
<div style="text-align: left;">
Once completed accept changes and restart your eclipse.</div>
<div style="text-align: left;">
Now next time you wanna checkout the source just check for definition of class/function. :)</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-70135515962676933722013-05-25T00:44:00.000+05:302013-05-25T00:45:27.904+05:30Transition View Pager<div dir="ltr" style="text-align: left;" trbidi="on">
Its been sometime when we talked anything core technical and made our hands dirty :)<br />
<br />
Well happy to announce of releasing a new open source project named TransitionViewPager.<br />
<br />
The credit goes to JazzyViewPager i have only extended the functionality to Fragments.<br />
<br />
<b>What's This Now !!!</b><br />
<br />
Its a ViewPager that allows you to do more than just showing your content.. it allows you to animate during transition.<br />
You can relate it to something like your application screen ( Android original Flavour )<br />
<br />
<br />
<b>Ok!!!</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAll9dHzsEWLRIU9PbWYxsczDRyxyMSI8KBLMkxZO-MB8g2-Uw29UmVNa-ifdKg1tkm2cK5xtJfjAAx8Un-b33rMS5JCqQhV3_k142dOkeKIKFW4b57eIvf9Oum27W1M3v0GjmWVvri4o/s1600/device-2013-05-25-031151.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAll9dHzsEWLRIU9PbWYxsczDRyxyMSI8KBLMkxZO-MB8g2-Uw29UmVNa-ifdKg1tkm2cK5xtJfjAAx8Un-b33rMS5JCqQhV3_k142dOkeKIKFW4b57eIvf9Oum27W1M3v0GjmWVvri4o/s320/device-2013-05-25-031151.png" width="180" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDM0xfEv8I3mw93P3G9Q5MXM4E6ok3WFpiOZrC12wmZJDZUOuw7dqmkeIrXcv_9S6ippN8pZXusd7bH67Wt5HT1z1wpTj6HVD_yf9aoNsyfm7mcdaxbTefTBlB6HBf6acPkmvHWTpsgpk/s1600/device-2013-05-25-031204.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDM0xfEv8I3mw93P3G9Q5MXM4E6ok3WFpiOZrC12wmZJDZUOuw7dqmkeIrXcv_9S6ippN8pZXusd7bH67Wt5HT1z1wpTj6HVD_yf9aoNsyfm7mcdaxbTefTBlB6HBf6acPkmvHWTpsgpk/s320/device-2013-05-25-031204.png" width="180" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFP-Zvu03Ll1pypRKSn7ZZklCPp27Cd6mOQiCV2IzkuYYjwNpRsY31nliZsGJpfzhH0y33W6Gk7nHxhwnyEvmc0kDer8FV9scZ_aoIxt_yo5HTdNcYiuTPyS3Ne-jPWMehX_26f_dDnL0/s1600/device-2013-05-25-031239.png" imageanchor="1" style="clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFP-Zvu03Ll1pypRKSn7ZZklCPp27Cd6mOQiCV2IzkuYYjwNpRsY31nliZsGJpfzhH0y33W6Gk7nHxhwnyEvmc0kDer8FV9scZ_aoIxt_yo5HTdNcYiuTPyS3Ne-jPWMehX_26f_dDnL0/s320/device-2013-05-25-031239.png" width="180" /></a><br />
<br />
<br />
<b>Kool! But how long will it take to implement?</b><br />
<br />
May be 2~10 mins (depends on your typing speed :D)<br />
<br />
Enough talk lets fight !! fafamuii!<br />
<br />
<b>Step 1:</b><br />
<b><i>layout.xml</i></b><br />
<br />
<div class="p1">
<i><span class="s1"><</span><span class="s2">com.abhi.animated.TransitionViewPager</span><span class="s3"> </span><span class="s4">xmlns:android</span><span class="s3">=</span>"http://schemas.android.com/apk/res/android"</i></div>
<div class="p1">
<i><span class="s3"> </span><span class="s4">xmlns:tools</span><span class="s3">=</span>"http://schemas.android.com/tools"</i></div>
<div class="p1">
<i><span class="s3"> </span><span class="s4">android:id</span><span class="s3">=</span>"@+id/pager"</i></div>
<div class="p2">
<i><span class="s3"> </span>android:layout_width<span class="s3">=</span><span class="s5">"match_parent"</span></i></div>
<div class="p2">
<i><span class="s3"> </span>android:layout_height<span class="s3">=</span><span class="s5">"match_parent"</span><span class="s3"> </span><span class="s1">></span></i></div>
<div class="p2">
<span class="s1"><i><br /></i></span></div>
<div class="p2">
<i><span class="s1"><</span>android.support.v4.view.PagerTitleStrip</i></div>
<div class="p2">
<i><span class="s2"> </span><span class="s3">android:id</span><span class="s2">=</span>"@+id/pager_title_strip"</i></div>
<div class="p3">
<i><span class="s2"> </span>android:layout_width<span class="s2">=</span><span class="s4">"match_parent"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:layout_height<span class="s2">=</span><span class="s4">"wrap_content"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:layout_gravity<span class="s2">=</span><span class="s4">"top"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:background<span class="s2">=</span><span class="s4">"#33b5e5"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:paddingBottom<span class="s2">=</span><span class="s4">"4dp"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:paddingTop<span class="s2">=</span><span class="s4">"4dp"</span></i></div>
<div class="p3">
<i><span class="s2"> </span>android:textColor<span class="s2">=</span><span class="s4">"#fff"</span><span class="s2"> </span><span class="s1">/></span></i></div>
<div class="p4">
<i><br /></i></div>
<div class="p1">
<i><span class="s1"></</span>com.abhi.animated.TransitionViewPager<span class="s1">></span></i></div>
<br />
<br />
<b>Step 2:</b><br />
<b><i>Activity.java</i></b><br />
just append this<br />
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<i><span class="s1">mViewPager</span> = (TransitionViewPager) findViewById(R.id.<span class="s1">pager</span>);</i></div>
<div class="p2">
<i><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>mViewPager<span class="s2">.setAdapter(</span>mSectionsPagerAdapter<span class="s2">);</span></i></div>
<br />
<div class="p1">
<i><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">mViewPager</span>.setTransitionEffect(TransitionEffect.<span class="s1">CubeOut</span>);</i></div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
Yepp!! you are all done!!! there are wide variety of stuffs that you can do with this... keep playing with <i style="font-weight: bold;">TransitionEffect </i>and see effects in application :)</div>
<div class="p1">
<br /></div>
<div class="p1">
<b>WAIT WAIT WAIT!! where to get it from?</b></div>
<div class="p1">
You can get it from here :<a href="https://code.google.com/p/transitionviewpager/" target="_blank"> https://code.google.com/p/transitionviewpager/</a></div>
<div class="p1">
<br /></div>
</div>
Unknownnoreply@blogger.com8tag:blogger.com,1999:blog-9204768623223209518.post-5006093997625716872013-04-03T11:50:00.002+05:302013-04-03T11:50:39.306+05:30Connecting your Bluetooth Keyboard with Ubuntu<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
I recently purchased Logitec Keyboard K810 ( Bluetooth ) as i wanted to have just one keyboard for all my devices ( Computer , Laptop and Phone )</div>
<br />
<div style="text-align: left;">
<span style="font-size: 14px; line-height: 19px;">It is no doubt an awesome device. But i soon realized that i was having a super hard time to connect it with my linux system.</span><span style="font-size: 14px; line-height: 19px;">Connecting with my Android Tablet was a breze but when it came to my Ubuntu System i was sooo dead.</span><span style="font-size: 14px; line-height: 19px;">Well finally after couple of tries found out the way to do it super simply.</span></div>
<h3 style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bolder; margin: 0.83em 0px; padding: 0px; position: relative;">
<span style="font-size: 14px; line-height: 19px;">set keyboard discoverable ( All commands are to be used on Terminal unless stated otherwise)</span></h3>
<ul style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; outline: none; padding: 0px 0px 0px 2em;">
<li style="margin: 0px; outline: none; padding: 0px;">"hcitool scan" and copy mac address XX:XX:XX:XX:XX:XX</li>
<li style="margin: 0px; outline: none; padding: 0px;">"sudo bluez-simple-agent hci0 XX:XX:XX:XX:XX:XX"<br />which will hopefully return somthing like:<br />"DisplayPasskey (/org/bluez/943/hci0/..., <b>123456</b>)"</li>
<li style="margin: 0px; outline: none; padding: 0px;">Just type the nubmber at the end ( in the above case its 123456 and press enter on your bluetooth keyboard.</li>
<li style="margin: 0px; outline: none; padding: 0px;">on success you should get "Release" and "New device (/org/bluez/..."</li>
<li style="margin: 0px; outline: none; padding: 0px;">now set device as trusted "sudo bluez-test-device trusted XX:XX:XX:XX:XX:XX yes"</li>
<li style="margin: 0px; outline: none; padding: 0px;">you might have a connection now, but i still needed to:<br />"sudo bluez-test-input connect XX:XX:XX:XX:XX:XX"</li>
</ul>
<div>
<span style="color: #333333; font-family: Helvetica Neue Light, HelveticaNeue-Light, Helvetica Neue, Helvetica, Arial, sans-serif;"><span style="font-size: 14px; line-height: 19px;">Congratulations you have successfully paired your new device :)</span></span></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-5793315713869002312013-03-04T07:33:00.000+05:302013-03-04T07:35:47.028+05:30Expense Tracker <div dir="ltr" style="text-align: left;" trbidi="on">
Hey All,<br />
<br />
It has been quite sometime we did any fun stuff.<br />
Well have been busy with lots of things.. practically SUPER LOTS ...<br />
<br />
Anyways, will tell you about those some other time.<br />
<br />
Today announcing a new app in market named as <a href="https://play.google.com/store/apps/details?id=com.abhi.expense.tracker" target="_blank">Expense Tracker</a>.<br />
<br />
Well, its not exactly a new concept and its not like i haven't rolled something similar before. If any of you remember i did roll out an application for devices up to 2.3 a similar application named as <a href="https://play.google.com/store/apps/details?id=easy.pocket.abhi.ui&hl=en" target="_blank">Easy Pocket Lite</a>.<br />
<br />
The new application is based on rich android<a href="http://developer.android.com/guide/topics/ui/" target="_blank"> UI deisgn</a> following HOLO theme application helps you manage your expenses in a really easy and quick way. It has almost zero setup time.<br />
<br />
All you need to do is to go to settings -> Enter your monthly amount (Something like your salary) -> Enter your currency. AND YOU ARE DONE :<br />
<br />
Every time you want to add a transaction simply click on + and follow a very minimal steps to add in the transactions.<br />
<br />
You can also view your transactions in multiple ways.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/MplmAKAvpj0?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br /></div>
Unknownnoreply@blogger.com1Singapore1.352083 103.819836000000010.84410649999999987 103.174389 1.8600595 104.46528300000001tag:blogger.com,1999:blog-9204768623223209518.post-61044952335234275682012-11-04T10:31:00.000+05:302013-11-22T08:53:23.530+05:30Creating Your QR Code Scanner and Generator<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="color: #660000;">THIS LIBRARY HAS BEEN DEPRICATED, PLEASE USE <a href="http://abhinavasblog.blogspot.sg/2013/11/barcode-scanner-and-generator-version-2.html" target="_blank">BARCODE FRAGMENT LIBRARY V2</a></span></h3>
Hey Everyone...<br />
Has been long since i posted any of the open source codes which could help you develop some awesome apps.<br />
Well was working on couple of things.. :D<br />
<br />
Anyways recently have been working with QR Code scanning and other stuffs...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtGIQBVroUO90YKbBSk0F_5TL1EILfLyZqZH7I1Sz2ntOxGogDLCadSltDoJl_vmacW3OZXWggVKQD_tcvNdvBXTSM-WvObNe6MpA6YwWrtcYNEKRuFwl5HmE5Zm62PxzW29qbfypcGCA/s1600/chart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtGIQBVroUO90YKbBSk0F_5TL1EILfLyZqZH7I1Sz2ntOxGogDLCadSltDoJl_vmacW3OZXWggVKQD_tcvNdvBXTSM-WvObNe6MpA6YwWrtcYNEKRuFwl5HmE5Zm62PxzW29qbfypcGCA/s320/chart.png" width="320" /></a></div>
<b><br /></b>
<b>WHAT IS QR-CODE?</b><br />
<b><a href="http://en.wikipedia.org/wiki/QR_code" target="_blank">As per wikipedia</a></b><br />
<b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">QR Code</b><span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;"> (abbreviated from </span><b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">Quick Response Code</b><span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">) is the trademark for a type of </span><span style="color: #0b0080; font-family: sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 19.200000762939453px;">matrix barcode</span></span><span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;"> (or two-dimensional code) first designed for the </span><span style="color: #0b0080; font-family: sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 19.200000762939453px;">automotive industry</span></span><span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">. More recently, the system has become popular outside the industry due to its fast readability and large storage capacity compared to standard </span><span style="color: #0b0080; font-family: sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 19.200000762939453px;">UPC barcodes</span></span><span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">. The code consists of black modules (square dots) arranged in a square pattern on a white background. The information encoded can be made up of four standardized kinds ("modes") of data (numeric, alphanumeric, byte/binary,</span>Kanji<span style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px;">), or through supported extensions, virtually any kind of data.</span><br />
<br />
We do have several libraries available.. (Many are paid and asks for upto $50k/1000 users and some free (zxing).<br />
Now the obvious question is: <b>WHY ANOTHER LIBRARY?</b><br />
<b><br /></b>
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9SFC_UqpqN5XKyYW-HoFt-XZWdJuYIENHURi5qMohOHdvlQu9HRaJepcDVn2ii80Tr9-8-SArO0-w6-0OzjWYZLUlcUROdmR_qI0Fuupcy7E_NkcIjKwtIn1wpI0PxF4ovJDshTX5vo/s1600/IMG_20121104_125458.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9SFC_UqpqN5XKyYW-HoFt-XZWdJuYIENHURi5qMohOHdvlQu9HRaJepcDVn2ii80Tr9-8-SArO0-w6-0OzjWYZLUlcUROdmR_qI0Fuupcy7E_NkcIjKwtIn1wpI0PxF4ovJDshTX5vo/s320/IMG_20121104_125458.jpg" width="240" /></a></div>
<b><br /></b>
<b><br /></b>
<b>1. </b>The library is based on <a href="http://code.google.com/p/zxing/" target="_blank">Zxing</a><br />
<b>2.</b> It is based on <a href="http://developer.android.com/guide/components/fragments.html" target="_blank">Fragments</a> which means that you can simply add the scanner functionality in any of your existing application without changing even a single line of code.<br />
<b>3</b>. You can invoke the scanner within a part of screen just like a small view, unlike the existing where you need to launch a new activity all together just to make a scan.<br />
<br />
<b>WHERE IS THE LIBRARY?</b><br />
Here is the link : <a href="http://code.google.com/p/barcodefragmentlib/">http://code.google.com/p/barcodefragmentlib/</a> (depricated)<br />
Please use: <a href="https://code.google.com/p/barcodefraglibv2/">https://code.google.com/p/barcodefraglibv2/</a><br />
<br />
<b>HOW TO TEST FUNCTIONALITY?</b><br />
You can download the <a href="http://code.google.com/p/barcodefragmentlib/downloads/detail?name=BarcodeFragmentLib.apk&can=2&q=" target="_blank">apk</a> which has been generated from the provided source.<br />
<br />
<b>LICENSE?</b><br />
As always its under Apache License. So feel free to use.<br />
<br />
<br />
Lemme know if it helped.</div>
Unknownnoreply@blogger.com18tag:blogger.com,1999:blog-9204768623223209518.post-16093558536997697682012-09-18T13:02:00.001+05:302012-09-18T13:18:26.565+05:30Customizing Android Phones<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<b>Easy steps for phone customization</b></div>
<div class="separator" style="clear: both; text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5-bNQegH2V0YYUtcleWGKA0u_jbN3zae1-QK_95TNrQNH8vr7KwZ3CxQD0QrDa7R5goPMXVyBNlu2ULu5DFx6xMgZgkJIp5O2svgOi1Itw01xKyYslayiLm1TE8yHUgbBjdqryhJB1E/s1600/Screenshot_2012-09-18-13-22-45%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5-bNQegH2V0YYUtcleWGKA0u_jbN3zae1-QK_95TNrQNH8vr7KwZ3CxQD0QrDa7R5goPMXVyBNlu2ULu5DFx6xMgZgkJIp5O2svgOi1Itw01xKyYslayiLm1TE8yHUgbBjdqryhJB1E/s400/Screenshot_2012-09-18-13-22-45%5B1%5D.png" width="225" /></a></div>
<br />
<br />
Phones, as i believe, is something very very personal. Then why my phone should be exactly like anyone else's phone around? Why should it even look or behave like someone else's?<br />
<br />
OpenSource was crafted with this intention, they gave all possible opportunity to people to create their own environment. A place where they can have everything just the way they want.<br />
<br />
When i talk about OpenSource in Phone environment i guess we all know what we are talking about here... Yepp Android Operating system.<br />
<br />
Well here are some easy ways by which you can customize your phone and make it behave exactly the way you want.<br />
<br />
<b>STEP 1 (Non rooted / rooted phones ):</b><br />
<u>Widgets </u>: This has been on Android since the beginning of time :) Many of you must have been using it already on your phones and many haven't.<br />
Widgets are by definition small portion of application which can work on your home screen and provide you a quck and easy way to access your application contents without even opening the application. For example the above screenshot contains three widgets<br />
1. Google search widget<br />
2. Clock<br />
3. Music Player<br />
Put them together and your screen becomes gorgeous :)<br />
<br />
<b>STEP 2</b> <b>(Non rooted / rooted phones ) :</b><br />
<u>Wallpapers :</u> Again you have couple of choices. You can use a static image as a wallpaper or can go for live wallpaper. WHATS LIVE WALL PAPER ? Its a wallpaper which can perform actions. For example it can show you a ocean view and you will see the waves around. there are hundereds of free live wallpapers available on android market, just check em out :)<br />
<br />
<b>STEP 3 ( Rooted / Custom roms) : </b><br />
Ok.. so you stayed long enough to reach this section... this is for pro users who love to play in deep :)<br />
There are plenty of options for you, namely Cyanogen, AOKP, MIUI and many others out there... all of them have some pros and cons. Cyanogen undoubtedly has the biggest community support followed by AOKP and MIUI. I personally use Cyanogen on my Galaxy Nexus device.<br />
<br />
These roms give you plenty of options to modify the system not only on appearance but also you can overclock your processor and get an awesome experience which you could have never got from your phone.<br />
<br />
Here are some of the things that you can do!
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWpI9K_i0AJzyymxZxStnUuYapmhhdOu4Hi8ki11hW57h1eVkuh5bwcZOI7RqH0MG3vchQ6I2WuJtfHuZckAObcfBtVd3eZvm-7JwpGRg-DgG5rC7-ckyg1Q6-Z90tF51dRTawuBqhtOY/s1600/Screenshot_2012-09-18-14-27-02%255B1%255D.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWpI9K_i0AJzyymxZxStnUuYapmhhdOu4Hi8ki11hW57h1eVkuh5bwcZOI7RqH0MG3vchQ6I2WuJtfHuZckAObcfBtVd3eZvm-7JwpGRg-DgG5rC7-ckyg1Q6-Z90tF51dRTawuBqhtOY/s320/Screenshot_2012-09-18-14-27-02%255B1%255D.png" width="180" /></a></div>
<a href="http://3.bp.blogspot.com/-E0J2D9yU9kM/UFgUDKNg4qI/AAAAAAAAUYQ/SLi3slJ6Oeo/s1600/photo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-E0J2D9yU9kM/UFgUDKNg4qI/AAAAAAAAUYQ/SLi3slJ6Oeo/s320/photo.jpg" width="236" /></a><br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So you can see the customization at notification area and the Lock screen.</div>
<div class="separator" style="clear: both; text-align: left;">
There are millions of other coool stuffs that you can start doing.. ( One of my Fav.. Run Ubuntu on your Android ) </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>STEP 4 (Rooted / Custom Rom) : </b></div>
<div class="separator" style="clear: both; text-align: left;">
<u>THEMES :</u> YOu can install themes on your device... and trust me it ant gonna slow your system down.. :) </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here are some changes which happened on settings and other places due to themes:</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Z5L-2-Ppjk4/UFgi1SYc2RI/AAAAAAAAUZA/cgipULMGxGM/s1600/Screenshot_2012-09-17-19-05-35.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-Z5L-2-Ppjk4/UFgi1SYc2RI/AAAAAAAAUZA/cgipULMGxGM/s400/Screenshot_2012-09-17-19-05-35.png" width="225" /></a></div>
<a href="http://2.bp.blogspot.com/-9Hj7zwSpU4c/UFgivSgSphI/AAAAAAAAUY4/-HINrXe0wYQ/s1600/Screenshot_2012-09-17-18-40-55.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="http://2.bp.blogspot.com/-9Hj7zwSpU4c/UFgivSgSphI/AAAAAAAAUY4/-HINrXe0wYQ/s400/Screenshot_2012-09-17-18-40-55.png" width="225" /></a><br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Change your phone every day with themes...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Hope you enjoyed and will try to make your phone a little more personal :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-86681279906638805932012-07-28T10:42:00.000+05:302012-07-28T10:42:04.088+05:30Nexus All models Factory images released..<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www2.pcmag.com/media/images/293617-google-android-4-1-jelly-bean.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www2.pcmag.com/media/images/293617-google-android-4-1-jelly-bean.jpg" /></a></div>
<br />
So now, you can get your phones updated to Jelly Beans (If you haven't got yourself updated yet) with official images.<br />
<br />
Official Images also comes handy if you have screwed up your phone by putting in some nasty custom roms.<br />
<br />
To Install the factory images there are some small BABY STEPS that you need to take.<br />
<br />
I have already posted the method to install the factory image for 4.0 in my previous post which is here : <a href="http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html">http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html</a><br />
<br />
All you need to do is instead of downloading 4.0 OS build you need to download it for 4.1<br />
<br />
<br />
The entire list of changes in Jelly Beans from ICS is provided here : <a href="http://www.android.com/about/jelly-bean/">http://www.android.com/about/jelly-bean/</a><br />
<br />
Happy Jelly Beans... :)</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-9920951277085673882012-07-27T07:43:00.001+05:302012-07-27T07:43:40.098+05:30Google Search<div><p dir=ltr><br>
Google today has introduced a new way to search the web for hand held devices..</p>
<p dir=ltr>They have enabled gesture search...</p>
<p dir=ltr><b>What</b> <b>is</b><b> </b><b>Gesture</b><b> </b><b>Search</b><b>.?</b><br>
Well gesture here refers to handwritten text... Hence, when i say Gesture Search it simply means you can write what you wanna search on the screen... Yepp no typing on the keyboard...</p>
<p dir=ltr><b>Wao</b><b>.. </b><b>so</b><b> </b><b>how</b><b> </b><b>do</b><b> </b><b>I</b><b> </b><b>do</b><b> </b><b>it</b><b>?</b><br>
As already mentioned this facility is only for devices with touch screen. <br>
All you need to do now is </p>
<p dir=ltr>1. Go to Google <br>
2. Click on settings in bottom of screen <br>
3. Click on Enable under Handwriting</p>
<p dir=ltr>4. Save</p>
<p dir=ltr>That's it... now you can write and search ...</p>
<p dir=ltr>And one last thing... you can search in more than 20 languages... :)</p>
<br/><img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIxmf-SaT5xYT5gw7qIIXCq1vMzXbD0ytWu2YiKs3rCMuAxaSs_Z5O-4fF79e3ETWX721GfINtx8mmfXiLo7Ee3MHsV-HpCw4FT0HFQmaeWokAqgsjlGuL9uR_rPnjitZv2ukK9igvuyk/' /><br/><img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEpMOcBll5tksJOEDmLA716_Hs21fsq1TvFFlYkzMpUE3qNXlCQYEppS25j0XeCcraM7CrzleX_NUbNbAMcYh0NzBXVe_K5QJlM9UO1aUm9ol5RMnZ1azTJERF7V75o8B3kHTe6AnBFiQ/' /></div>Unknownnoreply@blogger.com0Singapore, Singapore1.2800945 103.85095tag:blogger.com,1999:blog-9204768623223209518.post-42364549523179683352012-07-16T21:56:00.001+05:302012-07-16T22:00:23.352+05:30Rooting Android 4.1.1 Galaxy Nexus<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.theandroidsoul.com/wp-content/uploads/2012/07/Jelly-bean-easter-egg.jpg?9d7bd4" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="187" src="http://www.theandroidsoul.com/wp-content/uploads/2012/07/Jelly-bean-easter-egg.jpg?9d7bd4" width="320" /></a></div>
<br />
<br />
<br />
So.. many of you must be happy with your new awesome Jelly Beans... :) (Ofcrs people who got it)<br />
and many of you will be sad hat you now lost all your rooted power...<br />
<br />
Yes you loose root and your custom recoveries as soon as you put official Jelly Beans on your Galaxy devices.<br />
<br />
We we have a solution now.. :)<br />
<br />
<br />
It involves a small trick...<br />
<br />
<br />
From my previous posts you already know how to root your devices till 4.0 (ICS)<br />
<br />
Since we will be doing lot similar stuff here... so lets refresh your memory<br />
<br />
<br />
<ul style="margin: 0.5em 0px; padding: 0px 2.5em; text-align: left;"><span style="background-color: white;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;"><b>adb reboot bootloader</b></span></li>
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;"><b>adb devices </b></span></li>
<ul style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;">If cannot find your device</span></li>
<ul style="line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;">Add Device</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Device Manager</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Right Click on Android 1.0</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Manually update driver</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Choose Driver from List</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Android Usb Devices</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Samsung USB Composite</span></li>
</ul>
</ul>
<li style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Fastboot oem unlock</b></span></span></li>
</span></ul>
<span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b><br /></b>Now this part is all new for Jelly Beans so read carefully and dont miss anything: </span></span><br />
<span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><br /></span></span><br />
<ul style="margin: 0.5em 0px; padding: 0px 2.5em; text-align: left;"><span style="background-color: white;">
<li style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Start your phone...</b></span></span></li>
<li style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Copy <a href="http://download.chainfire.eu/197/SuperSU/CWM-SuperSU-v0.93.zip" target="_blank">CWM SuperSU</a> in sd sdcard</b></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Shutdown your phone and restart the phone by holding down to Volume Up+ Volume Down + power</b></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Type in </b></span></span><strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">fastboot flash recovery <a href="http://www.clockworkmod.com/rommanager/" target="_blank"><recovery-file.img></a></strong></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">By using Volume key navigate to Recovery Mode</strong></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">You will reach to custom recovery</strong></li>
<li style="margin: 0px 0px 0.25em; padding: 0px;"><strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">Select Install zip from sdcard</strong></li>
<li style="margin: 0px 0px 0.25em; padding: 0px; text-align: -webkit-auto;"><span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 24px;"><b>Select SuperUser zip from sdcard by pressing Power Button.</b></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px; text-align: -webkit-auto;"><span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 24px;"><b>Once installed type following command</b></span></span></li>
<ul>
<li style="margin: 0px 0px 0.25em; padding: 0px; text-align: -webkit-auto;"><span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 24px;"><b>adb shell</b></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px; text-align: -webkit-auto;"><span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 24px;"><b>cd system</b></span></span></li>
<li style="margin: 0px 0px 0.25em; padding: 0px; text-align: -webkit-auto;"><span style="color: #191919;"><span style="line-height: 24px;"><span style="font-family: Arial, Verdana, sans-serif; font-weight: bold;">mv</span><span style="font-family: inherit;"><b> </b></span></span></span><span style="font-family: inherit;"><b><span style="color: #222225;">/system/reboot-from-recovery.p </span><span style="color: #222225;">/system/reboot-from-recovery.bak</span></b></span></li>
</ul>
<li><span style="color: #222225;"><b>fastboot oem lock</b></span></li>
</span></ul>
<span style="color: #222225;"><b><br /></b></span><br />
<span style="color: #222225;"><b>That's it... You have your latest rooted Jelly Beans... :)</b></span></div>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-9204768623223209518.post-70132794663827270172012-07-11T11:02:00.000+05:302012-07-11T20:08:20.990+05:30Android 4.1.1 Update for All GSM Galaxy Nexus<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9TyeFMCh2Gi6YyR6S9hz9lAoG43yy24fWv6Q7tunhlaP6vxisBBWmr5DKuU0_2blAGsi4cczbfGVSci4UKdOUlMNn463kvMbGItFXwN12TJG1_PQkMQrK4ZEuzn2VZyeFzyhELrwXzvE/s1600/Screenshot_2012-07-11-13-33-26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9TyeFMCh2Gi6YyR6S9hz9lAoG43yy24fWv6Q7tunhlaP6vxisBBWmr5DKuU0_2blAGsi4cczbfGVSci4UKdOUlMNn463kvMbGItFXwN12TJG1_PQkMQrK4ZEuzn2VZyeFzyhELrwXzvE/s400/Screenshot_2012-07-11-13-33-26.png" width="225" /></a></div>
<br />
Yeah we all had been waiting for our official release of Jelly Beans...<br />
<br />
With the Jelly Beans source floating around it was highly expected that the updates will be coming up super soon.<br />
<br />
So here it is ... we just recieved two updates (Official Updates) from Google.<br />
<h2 style="border: 0px; color: #252525; font-family: Verdana; font-size: 1.7em; line-height: 27px; margin: 1em 0px 0px; outline: 0px; overflow: hidden; padding: 0px; text-align: -webkit-auto; text-shadow: rgba(0, 0, 0, 0.148438) 1px 1px 2px; vertical-align: baseline;">
Download</h2>
<ul style="border: 0px; color: #111111; font-family: Verdana; font-size: 13px; line-height: 19px; list-style-image: initial; list-style-position: initial; margin: 1em 0px 0px; outline: 0px; padding: 0px 0px 0px 35px; text-align: -webkit-auto; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-style: inherit; margin: 0.2em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;">takju</li>
<ul style="border: 0px; font-family: inherit; font-style: inherit; list-style: disc; margin: 0px; outline: 0px; padding: 0px 0px 0px 35px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-style: inherit; margin: 0.2em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a href="http://android.clients.google.com/packages/ota/google_takju/edfff6d328f1.signed-takju-JRO03C-from-JRN84D.edfff6d3.zip" style="border-bottom-style: dashed; border-width: 0px 0px 1px; color: #1e3246; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" title="http://android.clients.google.com/packages/ota/google_takju/edfff6d328f1.signed-takju-JRO03C-from-JRN84D.edfff6d3.zip">takju-JRO03C-from-JRN84D</a> (8,914,753 bytes)</li>
<li style="border: 0px; font-family: inherit; font-style: inherit; margin: 0.2em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a class="external" href="http://android.clients.google.com/packages/ota/google_takju/5c416e9cf57f.signed-takju-JRO03C-from-IMM76I.5c416e9c.zip" rel="nofollow" style="border-bottom-style: dashed; border-width: 0px 0px 1px; color: #1e3246; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" title="http://android.clients.google.com/packages/ota/google_takju/5c416e9cf57f.signed-takju-JRO03C-from-IMM76I.5c416e9c.zip">takju-JRO03C-from-IMM76I</a> (154,343,776 bytes)</li>
</ul>
<li style="border: 0px; font-family: inherit; font-style: inherit; margin: 0.2em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;">yakju<ul style="border: 0px; list-style: disc; margin: 0px; outline: 0px; padding: 0px 0px 0px 35px; vertical-align: baseline;">
<li style="border: 0px; font-family: inherit; font-style: inherit; margin: 0.2em 0px 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><a class="external" href="http://android.clients.google.com/packages/ota/google_maguro/f946a4120eb1.signed-yakju-JRO03C-from-IMM76I.f946a412.zip" rel="nofollow" style="border-bottom-style: dashed; border-width: 0px 0px 1px; color: #1e3246; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" title="">yakju-JRO03C-from-IMM76I</a> (151,966,582 bytes, MD5: 81ac79422f7704e46f792944693080ce)</li>
</ul>
</li>
</ul>
<br />
<br />
Unfortunately you don't get option to update your device. Well its not same with people who already have patched and have been using 4.1 from my <a href="http://abhinavasblog.blogspot.sg/2012/07/jelly-beans-on-your-galaxy-nexus.html" target="_blank">previous posts</a>.<br />
<br />
I'll help you get the latest updates with a both the devices. (With the Patches and Without the Patch)<br />
<br />
Lets start <b>(For users with nothing fancy in their phone i.e their phone is still running stock ICS) </b>:<br />
<br />
1. You need to install CWM recovery. (Don't worry this will be erased as soon as you update your device to latest version. )<br />
2. Follow the <a href="http://abhinavasblog.blogspot.sg/2012/07/root-galaxy-nexus-gsm-only.html" target="_blank">link</a> upto step 2. There is no need to do step 3.<br />
3. Now start your device and copy the relevant zip ion your SD card. (Check in settings to know which zip should you download. )<br />
4. In case you want to change your build version. Please follow this <a href="http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html" target="_blank">link </a>(We have installed TAKAJU) and then install custom recovery from step 2 again.<br />
5. Now follow these steps<br />
<blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Copy the zip to Device.</li>
<br />
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Switch off your device </li>
<br />
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Start your Phone by pressing Volume Up + Volume Down + Power</li>
<br />
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">You device should start in bootloader mode.</li>
<br />
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Use Volume up and Down to navigate for Recovery Mode</li>
<br />
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Press Power button to go into recovery<span style="background-color: white;"> </span></li>
</blockquote>
<blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">
<br />
<br />
<br />
<li style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13.63636302947998px; line-height: 17.27272605895996px; margin: 0px; outline: none; padding: 0px;">Select Install zip from Sdcard<span style="background-color: white;"> </span></li>
</blockquote>
6. Restart the phone.<br />
<br />
Now for the users who already are using Jelly Beans 4.1<br />
Download the file on your computer. (People who have used my previous posts to update their phones need to use <a href="http://android.clients.google.com/packages/ota/google_takju/edfff6d328f1.signed-takju-JRO03C-from-JRN84D.edfff6d3.zip" style="border-bottom-style: dashed; border-width: 0px 0px 1px; color: #1e3246; font-family: inherit; font-style: inherit; line-height: 19px; margin: 0px; outline: 0px; padding: 0px; text-align: -webkit-auto; text-decoration: none; vertical-align: baseline;" title="http://android.clients.google.com/packages/ota/google_takju/edfff6d328f1.signed-takju-JRO03C-from-JRN84D.edfff6d3.zip">takju-JRO03C-from-JRN84D</a>.)<br />
<br />
<b>Use following commands</b><br />
<br />
<ol style="text-align: left;">
<li><span style="background-color: white;">adb reboot bootloader</span></li>
<li><span style="background-color: white;">Choose recovery mode</span></li>
<li><span style="background-color: white;">You will see an exclamation mark on screen with android logo press and hold Volume up and Power button for approximately 10 secs.</span></li>
<li><span style="background-color: white;">You will see a recovery screen </span></li>
<li><span style="background-color: white;">Choose option update using adb</span></li>
<li><span style="background-color: white;">adb sideload Downloads\update_jelly.zip</span></li>
</ol>
<div>
That's it. </div>
<div>
<br /></div>
<div>
Once done you will be running on 4.1.1 version of Android OS.</div>
<br />
<br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9204768623223209518.post-66530552947839016262012-07-02T12:30:00.000+05:302012-07-12T15:21:37.854+05:30Jelly Beans on Your Galaxy Nexus<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<b><span style="font-size: large;">UPDATE: GET OFFICIAL GOOGLE JELLY BEANS UPDATE FROM THIS <a href="http://abhinavasblog.blogspot.sg/2012/07/android-411-update-for-all-gsm-galaxy.html" target="_blank">LINK</a></span></b></div>
<div class="separator" style="clear: both; text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMwAq1oqSg8Zqy11zB9ZW2AmsTBNDwxOiDd0233TT1HlvWJz_NfJ9z15UqvDbve6yfRR9fFsotjmV_HHHzr_pMX58QWjhpC189k4UbzJjeuhIa4_HdOQ8DWkoF16bblXucpS0XQA2UeVM/s1600/Screenshot_2012-07-02-14-54-14%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMwAq1oqSg8Zqy11zB9ZW2AmsTBNDwxOiDd0233TT1HlvWJz_NfJ9z15UqvDbve6yfRR9fFsotjmV_HHHzr_pMX58QWjhpC189k4UbzJjeuhIa4_HdOQ8DWkoF16bblXucpS0XQA2UeVM/s400/Screenshot_2012-07-02-14-54-14%5B1%5D.png" width="225" /></a></div>
<br />
So many of you have been waiting to see this :)<br />
<br />
Here is a step by step guide to install latest and greatest of Google Product on your Galaxy Nexus.<br />
<br />
Before you starts with your sleaves up lets walkthrough with stuffs that gonna happen to your phone...<br />
<br />
<br />
<span style="background-color: white;"></span><br />
<ul style="text-align: left;"><span style="background-color: white;">
<li><span style="background-color: white;">Will flash your device and Install Google Takaju</span><span style="background-color: white;"> </span></li>
<ul>
<li><span style="background-color: white;">Why you need that? Because the update has been released for this version only...</span></li>
</ul>
<li>We will Root our device</li>
<li>Install the new Update</li>
<ul>
<li>The root access will not be available to you anymore, so you phone will be as good as new.</li>
</ul>
</span></ul>
<span style="background-color: white;">
</span><span style="background-color: white;"><b><div>
<span style="background-color: white;"><b><br /></b></span></div>
So lets start </b></span><br />
<div>
<b><br /></b><br />
<div>
<span style="background-color: white;"><b>Step 1 Flashing TAKAJU</b></span></div>
<div>
<span style="background-color: white;"><b>Please refer to </b></span><a href="http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html">http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html</a> <span style="background-color: white;"><b><br /></b></span><br />
<br />
<b>Step 2 Rooting Your Device</b><br />
<b>Please refer to </b><a href="http://abhinavasblog.blogspot.sg/2012/07/root-galaxy-nexus-gsm-only.html" style="background-color: white;">http://abhinavasblog.blogspot.sg/2012/07/root-galaxy-nexus-gsm-only.html</a><br />
<br />
<b>Step 3 Installing Jelly Beans</b><br />
<b><br /></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYOvWRYLDDiYW9UneCFL-WTml-Prq6DCQ86RwNrukFEPjvsY52zYEcWBQAQCYQk6KI8Vad9C6366WAk3j9LFSAgVXoRbVTrefym8p8KhgBZLjFj0bxXYJoCXxc5J8ckL-thlqoiJCI-c/s1600/Screenshot_2012-07-02-14-55-36%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYOvWRYLDDiYW9UneCFL-WTml-Prq6DCQ86RwNrukFEPjvsY52zYEcWBQAQCYQk6KI8Vad9C6366WAk3j9LFSAgVXoRbVTrefym8p8KhgBZLjFj0bxXYJoCXxc5J8ckL-thlqoiJCI-c/s400/Screenshot_2012-07-02-14-55-36%5B1%5D.png" width="225" /></a></div>
<ul style="text-align: left;">
<li><b>Download the Jelly Beans Update from <a href="http://download.clockworkmod.com/test/jb-takju.zip" target="_blank">here</a></b></li>
<li><b>Copy it to</b> <b>SD CARD</b></li>
<li><b>Shutdown your phone</b></li>
<li><b>Press Volume Up + Volume Down and Power button together</b></li>
<li><b>Navigate to recovery using Volume buttons</b></li>
<li><b>Select Recovery using Power Button</b></li>
<li><b>Select install zip from sdcard</b></li>
<li><b>choose the downloaded file in sdcard</b></li>
<li><b>reboot</b></li>
</ul>
That's it.. Now your Phone has latest and Greatest Android 4.1 OS.<br />
<br />
<br />
<br />
<br />
ENJOY :)</div>
</div>
</div>Unknownnoreply@blogger.com68 Eu Tong Sen St, Singapore 0598181.2884889660939522 103.84680747985841.2865044660939522 103.8443399798584 1.2904734660939523 103.84927497985839tag:blogger.com,1999:blog-9204768623223209518.post-77604959749915730962012-07-02T10:47:00.000+05:302012-08-13T11:01:35.415+05:30Root The Galaxy Nexus (GSM Only)<div dir="ltr" style="text-align: left;" trbidi="on">
<strong style="background-color: whitesmoke; color: purple; font-family: Lora, georgia, serif; font-size: 14px; line-height: 21px;">Disclaimer:</strong><span style="background-color: whitesmoke; font-family: Lora, georgia, serif; font-size: 14px; line-height: 21px;"><span style="color: purple;"> Neither </span><a href="http://abhinavasblog.blogspot.com/" style="color: purple;" target="_blank">Abhinavasblog</a><span style="color: purple;">, nor <a href="http://www.blogger.com/goog_677035368">Google </a></span></span><span style="background-color: whitesmoke; background-image: none !important; border: 0px none transparent !important; bottom: 0px; color: purple; cursor: pointer; display: inline !important; font-family: inherit; font-size: inherit !important; left: 0px; line-height: 21px; margin: 0px; outline: none; padding: 0px; position: static; right: 0px; top: 0px;"><a href="http://google.com/" target="_blank">Inc</a>. should be held responsible for any damage happened to your device in the process of Rooting your Phone. </span>
<br />
<span style="background-color: whitesmoke; color: purple; font-family: Lora, georgia, serif; font-size: 14px; line-height: 21px;"><br /></span>
<span style="background-color: white;">Rooting your Galaxy Nexus is the easiest thing you will ever know...</span><br />
<span style="background-color: white;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIigm-Fkz0dCIpCadmfP6MDL66ssKHr8_xZcuYyb5hGXp5Lm2DfcZVSYgsvoKDb9jHkymw_077OaV5ge6MEUWmDVDrDOI-oi_Jv3wZjlbeYPmCwOtc1h0bgG9MF57Ug1XF32mopwG8qvc/s1600/android-root-legal.jpg.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIigm-Fkz0dCIpCadmfP6MDL66ssKHr8_xZcuYyb5hGXp5Lm2DfcZVSYgsvoKDb9jHkymw_077OaV5ge6MEUWmDVDrDOI-oi_Jv3wZjlbeYPmCwOtc1h0bgG9MF57Ug1XF32mopwG8qvc/s1600/android-root-legal.jpg.gif" /></a></div>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><b>WHY ROOTING?</b></span><br />
<span style="background-color: white;">Well... there is no single answer for this. So before we talk about "why rooting" lets know "what is rooting".</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><br /></span>
<span style="background-color: white;"><b>WHAT IS ROOTING?</b></span><br />
<span style="background-color: white;">Android is a Linux based Operating System... (For Non techies: Linux is just another Operating System like Windows and Mac ).</span><br />
<span style="background-color: white;"><br /></span>
<span style="background-color: white;">By default user do not have permission to modify any integral settings of the operating system, this has been implemented to save the OS from Users as they can accidentally perform some awesomely crazy changes.</span><br />
<br />
This limitation also takes away the power from your phone as some times software need those kind of permissions to work. This permission is known as ROOT PERMISSION.<br />
<br />
Hence the word ROOTING came up.<br />
<br />
So back to our basic question <b>WHY ROOTING?</b><br />
In order to get complete access t make modifications and customization of the Operating System you need to root.<br />
<br />
<br />
<b>WILL I LOOSE WARRANTY?</b><br />
Yes and No..<br />
<br />
Yes if you go with your rooted device to claim warrany and No if you reflash the original os : Please reffer to my <a href="http://abhinavasblog.blogspot.sg/2012/06/installing-custom-rom-on-galaxy-nexus.html" target="_blank">previous post</a> to know how to flash original OS.<br />
<br />
<br />
<b><u>ENOUGH TALK LETS FIGHT</u></b><br />
<b>Caution: Please make sure your battery is above 50% of charge. Take Backup as all your data on mobile will be lost.</b><br />
<b><br /></b>
<br />
<div style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto;">
<span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Step 1 Unlock Boot loader:</b></span></span></div>
<div style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto;">
</div>
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"></span><br />
<ul style="font-size: 13px; margin: 0.5em 0px; padding: 0px 2.5em;"><span style="background-color: white;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;"><b>adb reboot bootloader</b></span></li>
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;"><b>adb devices </b></span></li>
<ul style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;">If cannot find your device</span></li>
<ul style="line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="color: #111111; font-family: Arial, Verdana, sans-serif; line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="background-color: white;">Add Device</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Device Manager</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Right Click on Android 1.0</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Manually update driver</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Choose Driver from List</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Android Usb Devices</span></li>
<li style="line-height: 19px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;">Samsung USB Composite</span></li>
</ul>
</ul>
<li style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px; margin: 0px 0px 0.25em; padding: 0px;"><span style="color: #111111; font-family: Arial, Verdana, sans-serif;"><span style="line-height: 19px;"><b>Fastboot oem unlock</b></span></span></li>
</span></ul>
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;"><b><br /></b></span></span>
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;"><b>Step 2 Install Recovery:</b></span></span><br />
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;">Recovery is a piece of tool that allows you to install/ update/ replace/ reset your OS. The default recovery that we have in our device has very limited set of capabilities.</span></span><br />
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;">There are several options available to you I personally liked</span></span><br />
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;"><br /></span></span>
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;">Download from Here : </span></span><a href="http://www.clockworkmod.com/rommanager/">http://www.clockworkmod.com/rommanager/</a><br />
I myself am using <a href="http://download2.clockworkmod.com/recoveries/recovery-clockwork-touch-5.8.0.2-maguro.img" target="_blank">Touch Recovery</a> It is from the same place but specific to Galaxy Nexus GSM.<br />
<br />
<br />
<ul style="text-align: left;">
<li><strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; font-size: 15px; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">fastboot flash recovery </strong>
<strong style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; font-size: 15px; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;">optimus_prime-touch-v5.5.0.4-6-GSM.img</strong></li>
<li><span style="border: 0px; color: #191919; font-family: Arial, Verdana, sans-serif; font-size: 15px; line-height: 24px; margin: 0px; padding: 0px; text-align: -webkit-auto; vertical-align: baseline;"><span style="color: #111111; font-size: 13px; line-height: 19px; text-align: left;"><b>fastboot oem lock</b></span>
</span></li>
</ul>
<span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="font-size: 15px; line-height: 24px;">You have successfully flashed the new Recovery. Restart your phone.</span></span><br />
<div>
<span style="color: #191919; font-family: Arial, Verdana, sans-serif;"><span style="font-size: 15px; line-height: 24px;"><br /></span></span></div>
<div>
<b style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: small; line-height: 19px;">Step 3 Install Root:</b></div>
<div>
<b>Download Super User Zip from <a href="http://www.wgeekz.com/downloads/CWM-SuperSU-v0.94.zip" target="_blank">WGeekz link</a> v0.94</b></div>
<div>
<br /></div>
<div>
<br /></div>
<div style="text-align: left;">
<ul style="text-align: left;">
<li>Copy the zip to Device.</li>
<li>Switch off your device </li>
<li>Start your Phone by pressing Volume Up + Volume Down + Power</li>
<li>You device should start in bootloader mode.</li>
<li>Use Volume up and Down to navigate for Recovery Mode</li>
<li>Press Power button to go into recovery</li>
<li>Select Install zip from Sdcard</li>
<li>choose the zip file </li>
</ul>
Once these operations are performed its all done.. Choose option to restart your phone.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Once restarted you should be able to see an application names SU / SuperUser.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
THAT'S IT YOU HAVE SUCCESSFULLY ROOTED YOUR PHONE.<br />
<div>
<br />
<span style="color: #111111; font-family: Arial, Verdana, sans-serif; font-size: x-small;"><span style="line-height: 19px;"><br /></span></span></div>
</div>
</div>
Unknownnoreply@blogger.com1Singapore1.352083 103.8198361.098096 103.503979 1.6060699999999999 104.13569299999999