Pages

Showing posts with label 6. Show all posts
Showing posts with label 6. Show all posts

Tuesday, May 10, 2016

Download IDM 6 25 Build 10 Latest Final Full Version Fixed Terbaru 2016

Read More..

Friday, May 6, 2016

iKnowU Keyboard v1 6 6 Full

"5/5 Awesome! - The ultimate keyboard" - AppZoom
"iKnowU seems to go that little bit further offering a number of words to go with what you are actually typing....in the short time I have used both applications I am beginning to lean towards iKnowU." - Phones Review, iKnowU vs Swiftkey 4, Feb 2013
"iKnowU is the First Viable Contender Against Swiftkey." - Lazytechguys
"iKnowU’s keyboard does exactly what it says it does. It gets to know your typing style through some fantastic intuitive technology, and does it in a fashion that is so pleasing on the eye. I would definitely recommend this keyboard. 4.5/5" - Android Does
"This is one of the few keyboards Ive tried that makes me consider leaving the one Ive used for quite a while." - 9/10 - Android Rundown
"iKnowU, still manages to stand out with the ability to predict entire phrases and highlighting of the next letters it thinks youre going to type. Pretty impressive." - Android Police
***
iKnowU’s award-winning keyboard is the most feature-rich and intuitive you’ll ever use. Using state-of-the-art patented technology it knows what you’re about to type - letting you complete sentences at blazing speed. It’s so accurate, you’ll be amazed you ever typed without it!
iKnowU becomes more accurate every time you use it, constantly learning about you and your style. Amazing features such as WordChunking™and Gesturing™ enable you to chain together phrases and create whole sentences in a matter of seconds, saving you precious time. iKnowU is more than just a keyboard, it’s an extension of your personality.
Key Features
* WordChunking ™ - Displays possible predictions allowing you to find the word or phrase you’re looking for more quickly and accurately
* Word and Phrase Prediction - Create whole sentences and phrases in a fraction of the time that you’d normally take to type them
* Auto-correction - Type fast? No problem our market leading word/phrase corrections will fix your spelling errors.
* Re-correct - Auto-correct got it wrong? You can swipe across the keyboard right to left to delete it OR click on the green selection at the top to correct it to what you actually typed! And IKnowU will learn it for next time!
* Gesturing™- Enter words and phrases with alternative sub-second input resulting in blazing fast entry speeds with full accuracy
* Cloud Sync- Synchronise iKnowU between all your mobile devices
* AutoLearn - iKnowU learns and monitors your style and use of words, adjusting to better predict what you want to type
* Right or Left Handed Preference- iKnowU adjusts its actions based upon right or left-handed users
* Voice to Text - use the 123 keyboard switch key (hold down) and slide over to the microphone icon to try it out
* International keyboards like AZERTY selectable
* Multi-keyboards & Themes - IKnowU has many options allowing you to personalize it to the look and feel and operation you choose including many colorful themes
* Support for Multi-Dictionary - ability to concurrently predict from a multitude of dictionaries soon to be released, watch for them
* Discover how great iKnowU Keyboard is and see how much time it saves you in this free 30 day trial - enjoy!

Whats New
* PREDICTION - New multi-word/gram prediction system is more accurate than anything else on the market, predicting sentences and phrases more powerfully than ever before. Additional updates coming soon to make it more and more powerful.
* LEARNING - massive new learning system which can understand new words and phrases.

Read Here: How to Install APK

Requirements: Android 2.2+
File Size: 4.91 MB
Download Link: Mediafire
Read More..

Thursday, May 5, 2016

Android Chat example with server sending individual message to specify client


Refer to my old post of Simple Android Chat Application, server side, and client side. Function to send sending individual message to specify client is added in server side.


uses-permission of "android.permission.INTERNET" is needed in AndroidManifest.xml, for both server and client.


Server side:

MainActivity.java
package com.blogspot.android_er.androidchatserver;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class MainActivity extends AppCompatActivity {

static final int SocketServerPORT = 8080;

TextView infoIp, infoPort, chatMsg;
Spinner spUsers;
ArrayAdapter<ChatClient> spUsersAdapter;
Button btnSentTo;

String msgLog = "";

List<ChatClient> userList;

ServerSocket serverSocket;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
infoIp = (TextView) findViewById(R.id.infoip);
infoPort = (TextView) findViewById(R.id.infoport);
chatMsg = (TextView) findViewById(R.id.chatmsg);

spUsers = (Spinner) findViewById(R.id.spusers);
userList = new ArrayList<ChatClient>();
spUsersAdapter = new ArrayAdapter<ChatClient>(
MainActivity.this, android.R.layout.simple_spinner_item, userList);
spUsersAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spUsers.setAdapter(spUsersAdapter);

btnSentTo = (Button)findViewById(R.id.sentto);
btnSentTo.setOnClickListener(btnSentToOnClickListener);

infoIp.setText(getIpAddress());

ChatServerThread chatServerThread = new ChatServerThread();
chatServerThread.start();
}

View.OnClickListener btnSentToOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ChatClient client = (ChatClient)spUsers.getSelectedItem();
if(client != null){
String dummyMsg = "Dummy message from server. ";
client.chatThread.sendMsg(dummyMsg);
msgLog += "- Dummy message to " + client.name + " ";
chatMsg.setText(msgLog);

}else{
Toast.makeText(MainActivity.this, "No user connected", Toast.LENGTH_LONG).show();
}
}
};

@Override
protected void onDestroy() {
super.onDestroy();

if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

private class ChatServerThread extends Thread {

@Override
public void run() {
Socket socket = null;

try {
serverSocket = new ServerSocket(SocketServerPORT);
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
infoPort.setText("Im waiting here: "
+ serverSocket.getLocalPort());
}
});

while (true) {
socket = serverSocket.accept();
ChatClient client = new ChatClient();
userList.add(client);
ConnectThread connectThread = new ConnectThread(client, socket);
connectThread.start();

runOnUiThread(new Runnable() {
@Override
public void run() {
spUsersAdapter.notifyDataSetChanged();
}
});
}

} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

}

private class ConnectThread extends Thread {

Socket socket;
ChatClient connectClient;
String msgToSend = "";

ConnectThread(ChatClient client, Socket socket){
connectClient = client;
this.socket= socket;
client.socket = socket;
client.chatThread = this;
}

@Override
public void run() {
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;

try {
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream = new DataOutputStream(socket.getOutputStream());

String n = dataInputStream.readUTF();

connectClient.name = n;

msgLog += connectClient.name + " connected@" +
connectClient.socket.getInetAddress() +
":" + connectClient.socket.getPort() + " ";
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
chatMsg.setText(msgLog);
}
});

dataOutputStream.writeUTF("Welcome " + n + " ");
dataOutputStream.flush();

broadcastMsg(n + " join our chat. ");

while (true) {
if (dataInputStream.available() > 0) {
String newMsg = dataInputStream.readUTF();


msgLog += n + ": " + newMsg;
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
chatMsg.setText(msgLog);
}
});

broadcastMsg(n + ": " + newMsg);
}

if(!msgToSend.equals("")){
dataOutputStream.writeUTF(msgToSend);
dataOutputStream.flush();
msgToSend = "";
}

}

} catch (IOException e) {
e.printStackTrace();
} finally {
if (dataInputStream != null) {
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if (dataOutputStream != null) {
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

userList.remove(connectClient);

MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
spUsersAdapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this,
connectClient.name + " removed.", Toast.LENGTH_LONG).show();

msgLog += "-- " + connectClient.name + " leaved ";
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
chatMsg.setText(msgLog);
}
});

broadcastMsg("-- " + connectClient.name + " leaved ");
}
});
}

}

private void sendMsg(String msg){
msgToSend = msg;
}

}

private void broadcastMsg(String msg){
for(int i=0; i<userList.size(); i++){
userList.get(i).chatThread.sendMsg(msg);
msgLog += "- send to " + userList.get(i).name + " ";
}

MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
chatMsg.setText(msgLog);
}
});
}

private String getIpAddress() {
String ip = "";
try {
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
.getNetworkInterfaces();
while (enumNetworkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = enumNetworkInterfaces
.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface
.getInetAddresses();
while (enumInetAddress.hasMoreElements()) {
InetAddress inetAddress = enumInetAddress.nextElement();

if (inetAddress.isSiteLocalAddress()) {
ip += "SiteLocalAddress: "
+ inetAddress.getHostAddress() + " ";
}

}

}

} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
ip += "Something Wrong! " + e.toString() + " ";
}

return ip;
}

class ChatClient {
String name;
Socket socket;
ConnectThread chatThread;

@Override
public String toString() {
return name + ": " + socket.getInetAddress().getHostAddress();
}
}
}


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout

android_layout_width="match_parent"
android_layout_height="match_parent"
android_padding="16dp"
android_orientation="vertical"
tools_context="com.blogspot.android_er.androidchatserver.MainActivity">

<TextView
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_layout_gravity="center_horizontal"
android_autoLink="web"
android_text="http://android-er.blogspot.com/"
android_textStyle="bold" />

<TextView
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_text="Char Server"
android_textStyle="bold" />

<TextView
android_id="@+id/infoport"
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_textStyle="italic" />

<TextView
android_id="@+id/infoip"
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_textStyle="italic" />

<Spinner
android_id="@+id/spusers"
android_layout_width="match_parent"
android_layout_height="wrap_content"/>

<Button
android_id="@+id/sentto"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_text="Sent msg to individual user"/>

<ScrollView
android_layout_width="match_parent"
android_layout_height="match_parent" >

<TextView
android_id="@+id/chatmsg"
android_layout_width="wrap_content"
android_layout_height="wrap_content" />
</ScrollView>
</LinearLayout>



download filesDownload the server side files (Android Studio Format) .

Client side same as in the post "Simple Android Chat Application, client side" in Android Studio form.

download filesDownload the client side files (Android Studio Format) .

Read More..

Tuesday, May 3, 2016

Plants vs Zombies™ 2 v1 5 252752 Full

The zombies are coming… back. It’s about time! The sequel to the hit action-strategy adventure brings the fun to tablets and touchscreens. Join Crazy Dave on a crazy adventure where you’ll meet, greet and defeat legions of zombies from the dawn of time to the end of days. Amass an army of powerful new plants, supercharge them with Plant Food and power up your defenses with amazing new ways to protect your brain. Battle zombies from all worlds in Piñata Party to win big prizes. And thats just the beginning! The future holds many mysteries… also zombies. Lots and lots of zombies.


Game Features
Meet powerful new plants that will defend your lawn through time
Go toe-to-missing-toe with dozens of new zombies
Supercharge your floral friends with healthy doses of Plant Food
Fire up amazing Finger Powers to pinch, flick and zap zombies
Defeat brain-teasing challenges that will test your zombie-zapping skills
Take on zombies from all worlds in Piñata Party and win prizes 
Gather keys to play valuable side missions
Collect coins to purchase potent power-ups
Earn stars to take you to new worlds
Connect to Game Services to unlock achievements and compete against friends on the leaderboards
Look out! Zombie chickens!
Language Support: English, French, Italian, German, Spanish, Brazilian Portuguese

Requirements: 
Requires Android 2.3 (Gingerbread); ARMv7 1.0 Ghz or higher; 1 GB of RAM
Features may vary by mobile device

Whats New in Version 1.5
• In Piñata Party you get to battle zombies from all worlds in a special modern day front yard level for big prizes. You’ll have to plant fast though – Piñata Parties are only available for 24 hours at a time. Successfully beat three consecutive parties and you can win a mind-blowing mega prize by whacking open the massive Señor Piñata!
• Speeding up the level progression – now you can skip the map and move from level to level with ease.

Read Here: How to Install APK

Requirements: Android 2.2+
File Size: 146 MB
Download Link: APK + OBB
Read More..

Monday, May 2, 2016

Internet Download Manager IDM 6 23 Build 17 Full Registered 32bit 64bit Patch

IDM

Internet Download Manager (IDM) 6.23 Build 17 Full/Registered (32bit + 64bit Patch)


Internet Download Manager (IDM) is a tool to increase download speeds by up to 5 times, resume and schedule downloads. Comprehensive error recovery and resume capability will restart broken or interrupted downloads due to lost connections, network problems, computer shutdowns, or unexpected power outages. Simple graphic user interface makes IDM user friendly and easy to use.Internet Download Manager has a smart download logic accelerator that features intelligent dynamic file segmentation and safe multipart downloading technology to accelerate your downloads. Unlike other download managers and accelerators Internet Download Manager segments downloaded files dynamically during download process and reuses available connections without additional connect and login stages to achieve best acceleration performance.

Read More..

Wednesday, April 27, 2016

Latest IDM 6 23 Final Build 8 Full Version Full Patch



Latest IDM 6:23 Final Build 8 Full Version

Latest IDM was released on 19 March 2015. The usefulness of this IDM itself to speed up the process of downloading files on the Internet. Such as downloading videos, images, audio, video games and software etc. If you are using IDM is eating you easily download files that exist on the internet and the latest IDM also has better features than the previous one.

Latest Feature IDM 6:23 Build 8 Final Full Version


  • Fixed a critical bug in the IDM network drivers
  • Fixed compatibility problems with antiviral and internet security software
  • Improved taking over downloads of videos from web players in Google Chrome
  • Added a feature to change video resolution for rtmp protocol
  • Added support for SeaMonkey 2:33
  • Fixed problems with video / audio recognition for Several types of web sites
  • Fixed compatibility problems of the Google Chrome extension with Several applications
  • Fixed bugs in Chrome integration module
  • Added support for Firefox 37
  • Added support for Google Chrome 42
  • Added support for new types of video streaming sites
  • Fixed bugs


How to Install IDM:


  1. Download and extract the file "Final 6.23 IDM Build 8 Full Version"
  2. Then install the IDM software it as usual. After the installation is completed do not always open the program. (For those of you that have previously been installed IDM, IDM his first uninstall the new install it again with this latest IDM).
  3. Run the patch by right click and select run as administrator
  4. click patch
  5. Then copy and paste also IDMGrHlp.exe files to C: Program Files (x86) Internet Download Manager
  6. Finish
Link Download

IDM 6.23 Final Build 8 Full Version - (6 mb)

IDM Patch - (320 Kb)


Read More..

Advanced Xperia Z Launcher v2 0 6 Full


Original Features:
- Arrange, add and remove home screens
- Organize your apps in the App drawer by placing them in folders (only available when sorting method is “Own order”)
- Search for apps in the App drawer
- Share apps on social networks


Functionalities added:
- Support for any resolution and any DPI setting
- User selectable desktop and App drawer grid size (from 3×3 up to 12×12)
- User assignable swipe, pinch and double tap gestures and button actions
- Infinite scrolling
- Hiding apps on the app drawer
- Support for Go Launcher and Launcher Pro icon packs
- Personalize individual shortcuts’ icon and label
- Backup & restore launcher settings
- Adding shortcuts to launcher actions and to any activity
- Others

Changes from stock 5.1.S.0.0:
- Installable as normal APK on any Android 4.0.3+ device / ROM
- Maximum number of home screens increased from 7 to 11
- The new Xperia Z dock background image also applied for HDPI and MDPI (besides XHDPI)
- Removed shortcut for selecting Sony color theme (themes do not work on most devices, if your device supports it, you can change the theme in: Settings -> Display -> Theme)
- App Drawer: The desktop scrolling effect also added to the app drawer
- App Drawer: Removed the backplate image
- Slightly decreased stiffness of the scrolling dynamics for the desktop / app drawer

Information:
- Very limited customization features in comparison with Xperia Launcher 0.X.X and 1.X.X – to be changed!
- Full functionality is available only if the app is installed as system app (push to /system/app at set respective permissions – requires root)! – to be changed!
- If installed as normal app (no root needed), you’ll be able to add only Xperia widgets to the desktop – to be changed!
- The Xperia widgets compatible with Xperia Launcher 1.X.X are also compatible with 2.X.X
- No support for custom DPI – to be changed!

Whats New
- Added: app drawer style – choose between “Classic Xperia Z” and “Advanced Xperia Launcher”
- Updated translations (from 28.June.2013)
- Small performance optimizations
- Disabled resources compression to improve launcher settings loading times
- Optimized all PNG files
- Fixed: Check for updates always showing “you have the latest version”
- Fixed: Bad alignment of the app drawer button on some devices
- Fixed: App drawer button image for LDPI landscape mode
- Fixed: Inability to select custom icon image with some gallery and file management apps
- Fixed: Inability to select custom dock background image with some gallery and file management apps
- Fixed: Changing the “Keep in Memory” setting does not need a launcher restart in order to be applied anymore
- Fixed: (Android 4.3+ only) Notification is now low priority and tapping on it shows launcher settings
- Fixed (hopefully): tapping app / shortcut icons not launching the respective app from the first time

Read Here: How to Install APK

Requirements: Android 4.0.3+
File Size: 3 MB
Download Link: Mediafire.com
Read More..

Android query current weather using OpenWeatherMaps Weather API


OpenWeatherMaps weather API is simple, clear and free. This Android example show how access current weather data using OpenWeatherMaps weather API; for any location on Earth including over 200,000 cities! Current weather is frequently updated based on global models and data from more than 40,000 weather stations. Data is available in JSON, XML, or HTML format. This example use JSON.


To access the API you need to sign up for an API key, this example use the demo API Key (appid in the query)

MainActivity.java
package com.blogspot.android_er.androidopenweathermap;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {

EditText editTextCityName;
Button btnByCityName;
TextView textViewResult, textViewInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextCityName = (EditText)findViewById(R.id.cityname);
btnByCityName = (Button)findViewById(R.id.bycityname);
textViewResult = (TextView)findViewById(R.id.result);
textViewInfo = (TextView)findViewById(R.id.info);

btnByCityName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new OpenWeatherMapTask(
editTextCityName.getText().toString(),
textViewResult).execute();
}
});
}

private class OpenWeatherMapTask extends AsyncTask<Void, Void, String> {

String cityName;
TextView tvResult;

String dummyAppid = "bd82977b86bf27fb59a04b61b657fb6f";
String queryWeather = "http://api.openweathermap.org/data/2.5/weather?q=";
String queryDummyKey = "&appid=" + dummyAppid;

OpenWeatherMapTask(String cityName, TextView tvResult){
this.cityName = cityName;
this.tvResult = tvResult;
}

@Override
protected String doInBackground(Void... params) {
String result = "";
String queryReturn;

String query = null;
try {
query = queryWeather + URLEncoder.encode(cityName, "UTF-8") + queryDummyKey;
queryReturn = sendQuery(query);
result += ParseJSON(queryReturn);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
queryReturn = e.getMessage();
} catch (IOException e) {
e.printStackTrace();
queryReturn = e.getMessage();
}


final String finalQueryReturn = query + " " + queryReturn;
runOnUiThread(new Runnable() {
@Override
public void run() {
textViewInfo.setText(finalQueryReturn);
}
});


return result;
}

@Override
protected void onPostExecute(String s) {
tvResult.setText(s);
}

private String sendQuery(String query) throws IOException {
String result = "";

URL searchURL = new URL(query);

HttpURLConnection httpURLConnection = (HttpURLConnection)searchURL.openConnection();
if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){
InputStreamReader inputStreamReader = new InputStreamReader(httpURLConnection.getInputStream());
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader,
8192);

String line = null;
while((line = bufferedReader.readLine()) != null){
result += line;
}

bufferedReader.close();
}

return result;
}

private String ParseJSON(String json){
String jsonResult = "";

try {
JSONObject JsonObject = new JSONObject(json);
String cod = jsonHelperGetString(JsonObject, "cod");

if(cod != null){
if(cod.equals("200")){

jsonResult += jsonHelperGetString(JsonObject, "name") + " ";
JSONObject sys = jsonHelperGetJSONObject(JsonObject, "sys");
if(sys != null){
jsonResult += jsonHelperGetString(sys, "country") + " ";
}
jsonResult += " ";

JSONObject coord = jsonHelperGetJSONObject(JsonObject, "coord");
if(coord != null){
String lon = jsonHelperGetString(coord, "lon");
String lat = jsonHelperGetString(coord, "lat");
jsonResult += "lon: " + lon + " ";
jsonResult += "lat: " + lat + " ";
}
jsonResult += " ";

JSONArray weather = jsonHelperGetJSONArray(JsonObject, "weather");
if(weather != null){
for(int i=0; i<weather.length(); i++){
JSONObject thisWeather = weather.getJSONObject(i);
jsonResult += "weather " + i + ": ";
jsonResult += "id: " + jsonHelperGetString(thisWeather, "id") + " ";
jsonResult += jsonHelperGetString(thisWeather, "main") + " ";
jsonResult += jsonHelperGetString(thisWeather, "description") + " ";
jsonResult += " ";
}
}

JSONObject main = jsonHelperGetJSONObject(JsonObject, "main");
if(main != null){
jsonResult += "temp: " + jsonHelperGetString(main, "temp") + " ";
jsonResult += "pressure: " + jsonHelperGetString(main, "pressure") + " ";
jsonResult += "humidity: " + jsonHelperGetString(main, "humidity") + " ";
jsonResult += "temp_min: " + jsonHelperGetString(main, "temp_min") + " ";
jsonResult += "temp_max: " + jsonHelperGetString(main, "temp_max") + " ";
jsonResult += "sea_level: " + jsonHelperGetString(main, "sea_level") + " ";
jsonResult += "grnd_level: " + jsonHelperGetString(main, "grnd_level") + " ";
jsonResult += " ";
}

jsonResult += "visibility: " + jsonHelperGetString(JsonObject, "visibility") + " ";
jsonResult += " ";

JSONObject wind = jsonHelperGetJSONObject(JsonObject, "wind");
if(wind != null){
jsonResult += "wind: ";
jsonResult += "speed: " + jsonHelperGetString(wind, "speed") + " ";
jsonResult += "deg: " + jsonHelperGetString(wind, "deg") + " ";
jsonResult += " ";
}

//...incompleted

}else if(cod.equals("404")){
String message = jsonHelperGetString(JsonObject, "message");
jsonResult += "cod 404: " + message;
}
}else{
jsonResult += "cod == null ";
}

} catch (JSONException e) {
e.printStackTrace();
jsonResult += e.getMessage();
}

return jsonResult;
}

private String jsonHelperGetString(JSONObject obj, String k){
String v = null;
try {
v = obj.getString(k);
} catch (JSONException e) {
e.printStackTrace();
}

return v;
}

private JSONObject jsonHelperGetJSONObject(JSONObject obj, String k){
JSONObject o = null;

try {
o = obj.getJSONObject(k);
} catch (JSONException e) {
e.printStackTrace();
}

return o;
}

private JSONArray jsonHelperGetJSONArray(JSONObject obj, String k){
JSONArray a = null;

try {
a = obj.getJSONArray(k);
} catch (JSONException e) {
e.printStackTrace();
}

return a;
}
}
}


layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout


android_layout_width="match_parent"
android_layout_height="match_parent"
android_padding="16dp"
android_orientation="vertical"
tools_context=".MainActivity">

<TextView
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_layout_gravity="center_horizontal"
android_autoLink="web"
android_text="http://android-er.blogspot.com/"
android_textStyle="bold" />

<EditText
android_id="@+id/cityname"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_hint="City name"/>
<Button
android_id="@+id/bycityname"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_text="Call current weather by city name"/>
<LinearLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_orientation="horizontal">
<ScrollView
android_layout_width="0dp"
android_layout_height="match_parent"
android_layout_weight="1">
<TextView
android_id="@+id/result"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textSize="20dp"
android_textStyle="bold"/>
</ScrollView>
<ScrollView
android_layout_width="0dp"
android_layout_height="match_parent"
android_layout_weight="1">
<TextView
android_id="@+id/info"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textSize="18dp"
android_textStyle="italic"/>
</ScrollView>
</LinearLayout>

</LinearLayout>


Permission of "android.permission.INTERNET" is needed in AndroidManifest.xml.
 <uses-permission android_name="android.permission.INTERNET"/>


download filesDownload the files (Android Studio Format) .
Read More..

Saturday, April 23, 2016

Free eBook Android Quick Start Guide Android 6 0 Marshmallow

Free from Google Play - Android Quick Start Guide, Android 6.0 (Marshmallow). Introduces Android 6.0 (Marshmallow) for Nexus and Android One devices. Available globally. For complete online help, see https://goo.gl/e178JT.



Read More..

Wednesday, April 20, 2016

Android 6 Essentials

Design, build, and create your own applications using the full range of features available in Android 6

Android 6 Essentials

About This Book
  • Learn how to utilize the robust features of Android 6 to design, develop, and publish better Android applications
  • Get useful guidance on creating new apps or migrating existing apps to support features such as app permissions, app links, fingerprint authentication, etc
  • A fast paced guide, packed with hands-on examples that ties all the features such as API, audio, video, camera, tab customization together under a single cover
Who This Book Is For
This book is for Android developers who are looking to move their applications into the next Android version with ease.

What You Will Learn
  • Familiarize yourself with the features of Android 6
  • Code with the new Android permissions model
  • Use apps auto backup and restore lost data automatically
  • Increase user engagement with apps through an assistant using triggers and providing contextual assistance
  • Assess and handle proper usage of the API
  • Work with Audio, Video,Camera in Android 6
  • Utilize the new features in Android for professional purposes
  • Understand and code Chromes custom tabs
In Detail
Android 6 is the latest and greatest version of the Android operating system, and comes packed with cutting edge new features for you to harness for the benefit of building better applications.

This step-by-step guide will take you through the basics of the Android Marshmallow permissions model and beyond into other crucial areas such as the Audio,Video,Camera API and Androids at work features. Learn how to create, deploy, and manage Android applications with Marshmallows API and the latest functionalities.

The combination of instructions and real-world examples will make your application deployment and testing a breeze.

Style and approach
This easy-to-follow, step-by-step tutorial provides explanations and examples to add the new Android 6 features to your skill set. Each chapter provides sequential steps and detailed information about the API, as well as best practices and testing options.

Read More..

Sunday, April 17, 2016

Sothink SWF Easy 6 1 Full Serial



Sothink SWF Easy is a software that is easy to use, but it is a powerful software in Flash animation creation. No matter you are a basic or intermediate users, this is an extraordinary tool for you to create flash animations are beautiful and professional with a quick and easy way.
after using this program I found some of the advantages of Sothink SWF Easy:
1. Easy to use
To create an animation, you can start from scratch or from one of the built-in templates. You can draw shapes, create text, and import images, shapes, sounds, video, buttons, video clips, and even other Flash movies, and then reposition, reshape or recolor them to achieve your needs through a few mouse clicks. Of course, you also can any code object with Action Script 2.0 to achieve more advanced functions if you wish. Optimized user interface, including the WYSIWYG design panel and integrated preview makes the creation more intuitive.
2. Save time
There are three types of pre-made templates (album, banner and navigation buttons) and a variety of built-in resources in this product that make it more productive. With templates, you can easily create professional Flash animations. They do a lot of complex work for you automatically, and this can save you a lot of time and energy. The built-in resources, including interesting pictures and useful variety, shapes, buttons and video clips, is specifically designed for Sothink SWF Easy user. You can easily pull one of them to the window pane design of resources for reuse.
If you are interested please menggunakann Sothink SWF Easy downloaded via the download button below
3. Fancy effects
Another effect is a great feature included. You do not need to write action script or make a motion frame because the effects can create animated elements. There are many types of standard effects, and you can apply one or more of them to the selected element only through a few clicks of the mouse, then you will see what effect you have created luxury.
Main Features of Sothink SWF Easy:



1. Able to make a normal album, flip album, navigation buttons, banners etc. easily through templates and wizards.
2. Provides dozens of built-in effects for applying to shapes, text and images, and you can configure the effects you want.
3. Provides a large amount of resources ready for use and classify resources with the goal.
4. Support resource search by entering a keyword (s) of the resource you want.
5. Support the addition of resources by installing Resource zip file downloaded from Sothink website.
6. Supports stacking effect, creating a unique animation style your taste.
7. Supports adding motion path to elements with WYSIWYG drawing tools.
8. Able to save and apply combined effect.
the various resources that can also be adjusted freely offer.
9. Able to obtain external resources (Shape, Image, Button, Sound, Movie Clip, etc.) of the SWF file.
10. Provide some edited UI components to help build applications. 11.
11. Supports free form design with a drawing tool.
12. Supports dragging elements up or down in Timeline to change Z-order.
13. Supports locking / unlocking element to avoid making unnecessary changes for it.
14. Supports setting transparency for a specified color in a shape filled with a bitmap.
15. Supports importing existing vector graphics such as SVG, WMF / EMF and GLS, .. GLB,. GLM, which Sothink SWF Easy file format.
16. Supports import SWF files directly for complete use; grouping elements in SWF file while importing and using it selectively.
17. Supports importing video files.
18. Supports export as SWF files, GIF files and AVI files.
19. Supports common image formats, including BMP, JPEG, PNG and GIF.
20. Supports rich text format.
21. Able to manage the common elements in different layers into the background of certain scenes.
22. Provides WYSIWYG design window and integrated preview.
23. ActionScript2.0 fully supports.

Link Download:
  • Download Sothink SWF Easy 6.1
  • Download Keygen
Serial Number:

  • Name: www.crackinn.com
  • Serial: YW0Q1U047NS4WM7BKA9N53SV
Read More..