62 Open Source Replacements for Popular Financial Software

Posted by Unknown Rabu, 05 Juni 2013 0 komentar
http://www.datamation.com/open-source/62-open-source-replacements-for-popular-financial-software-1.html


The open source community offers a wide array of options to assist you, whether you're tracking your personal bank accounts, managing your small business, setting up an online shop or monitoring finances for a large enterprise.
Like much of the software industry, financial software is in the midst of great change. While many consumers and companies still use traditional software that they have installed on their PCs and/or servers, many are turning to cloud-based solutions. In addition, many users are looking for solutions that include mobile capabilities.
The same trends hold true within the open source community. Many open source financial applications are also now available for use in the cloud, and a growing number can be accessed from mobile devices. The cloud has been particularly good for open source projects because it gives them a viable way to earn money from their code, and it also appeals to end users who like the low monthly prices and the ability to access their data from any device.
This month, we've updated our list of open source software that can replace proprietary financial applications, and not surprisingly the list includes quite a few entries that are available for use in the cloud. As always, if you know of additional projects that you think should be on our list, please make a note in the comments section below.

Accounting

1. Edoceo Imperium
Bringing IT Closer to Business
Download Now
Replaces QuickBooks, Sage 50
Web-based Imperium offers customer relationship management (CRM), work orders, invoicing and accounting capabilities, and it integrates with Google services, including Calendar and Gmail. Check out the online demo to see it in action. Operating System: OS Independent
2. FrontAccounting
Replaces QuickBooks, Sage 50
Designed for small businesses, this Web-based accounting system also includes some ERP functions like item and inventory tracking. It's available on an SaaS basis, and there is a list of partners on the site who offer related services. Operating System: OS Independent
3. GnuCash
Replaces Quicken Home and Business
This flexible accounting package tracks your small business finances with double-entry accounting, and it can also track your personal finances, including your investment accounts. It also now comes with an Android app. Operating System: Windows, Linux, OS X, Android
4. LedgerSMB
Replaces QuickBooks, Sage 50
Downloaded more than 57,000 times, this small business accounting package also incorporates some basic ERP and CRM functionality. Several third-party vendors offer commercial support and consulting. Operating System: Windows, Linux, OS X
5. osFinancials
Replaces QuickBooks, Sage 50
This accounting solution offers invoices, customizable reports, stock control, point-of-sale capabilities and much more. Because it's developed by a team in the Netherlands, much of the documentation and support is in Dutch, but English is also available. Operating System: Windows, Linux
6. TurboCASH
Replaces QuickBooks, Sage 50
This accounting software invites comparison to QuickBooks and Sage. Features include multi-user support, customizable invoices, point-of-sale capabilities, multi-country and multi-company support, XML import/export and more. Operating System: Windows

Billing and Invoicing

7. Argentum
Replaces FreshBooks, Bill.com
Web-based Argentum tracks clients and billable hours, as well as generating invoices for you each month. Installation assistance, commercial support and a hosted version are also available. Operating System: OS Independent
8. jBilling
Replaces FreshBooks, Bill.com
Downloaded more than 120,000 times, jBilling claims to be "world's leading open source enterprise billing solution." It's particularly good for subscription-based billing, and notable customers include Deutsche Telecom, Constant Contact and Rackspace. In addition to the free version, paid support and services are available. Operating System: OS Independent
9. Simple Invoices
Replaces FreshBooks, Bill.com
Popular with small companies and non-profits, this browser-based invoicing system aims to be easy to use. Host it yourself for free or contact one of the third-party hosting providers listed on the site. Operating System: OS Independent
10. Siwapp
Replaces FreshBooks, Bill.com
This invoicing app tries to be simple, straightforward, comfortable, useful, pretty, flexible, productivity-oriented, secure, supported and usable anywhere. Plenty of screenshots and a demo are posted on the site so that you can see how it works before you download it. Operating System: OS Independent

E-Commerce

11. Broadleaf Commerce
Replaces Big Commerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
This Java-based e-commerce platform boasts a low total cost of ownership, multi-channel support and powerful features like content targeting, catalog management and more. It's available with either an open source community license or a commercial license; to download the source code, see the developer site. Operating System: Windows, Linux, OS X
12. Fishop.NET
Replaces Big Commerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
This "no-frills" solution boasts easy installation and customization capabilities. It's available on an SaaS basis. Operating System: Windows
13. Interchange
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
This older e-commerce platform has been around since 1995. The site features a "hall of fame" displaying various web stores powered by Interchange, as well as a list of third-party partners that will provide commercial support and services. Operating system: Linux, OS X
14. Magento
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
This award-winning shopping cart solution aims to be "feature-rich and user-friendly." Noteworthy capabilties include integrated product ratings and reviews, unlimited categories and products, multi-language and multi-currency support, automatic image resize and more. Commercial support is available from partners in numerous countries. Operating System: Windows, Linux, OS X
15. nopCommerce
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
Based on Microsoft technologies, this Windows-only ecommerce solution includes both front-end and back-end capabilities. "Premium" support is available, and the site also lists third-party partners who offer hosting services. Operating System: Windows
16. Order Portal
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
Part of a complete Web Business Suite, Order Portal is designed to meet the ecommerce needs of manufacturers, value-added distributors and rental companies. The full suite adds CRM, data migration and real-time reporting capabilities. Operating System: Linux
17. osCommerce
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
More than 260,000 merchants use this popular ecommerce software, and it boasts more than 7,000 add-ons, offering maximum flexibility. Support is available through third-party partners. Operating System: Windows, Linux, OS X


18. OXID
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
OXID claims numerous European online retailers as users, including the Mercedes-Benz used parts site. The project owners also offer paid support and services. Operating System: Windows, Linux, OS X
19. PrestaShop
Harness the Power of Data Visualization to Transform Your Business
Download Now
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
Downloaded more than 2.6 million times, this popular app promises that you can use it to start setting up your own online store in just minutes. Optional paid support and a hosted version called "PrestaBox" are also available. Operating System: Windows, Linux, OS X
20. Spree
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
Used by Second Life, Wayne Gretzky Estates, Coupon Trade and many other sites, Spree claims to be "the world's most flexible e-commerce platform." In addition to the free community version, it comes in Standard and Premium editions, which offer the same features but add paid support. Operating System: OS Independent
21. Tomato Cart
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
Designed to be mobile-friendly, Tomato Cart claims to be one of the most innovative open source e-commerce systems available. Key features include an RIA-based administration panel, search engine optimization, Web analytics, a content management system and a built-in email system. Paid support is available, as is third-party hosting. Operating System: Windows, Linux
22. Zen Cart
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
This ecommerce solution was designed to make things easy for small business owners who are new to selling online. Extensive video and text documentation are available through the site, and it also provides links to service providers for payment processing, hosting and other related services. Operating System: Windows, Linux
23. ZenMagick
Replaces BigCommerce, Volusion, Yahoo Merchant, NetSuite Ecommerce
A fork of Zen Cart, ZenMagick offers a clean, uncluttered administrative interface, free shipping and billing modules, built-in Ajax support and more. Commercial support is available through Mixed Matter. Operating System: OS Independent

Enterprise Resource Planning (ERP)

24. ADempiere ERP Business Suite
Replaces SAP, Microsoft Dynamics
Forked from Compiere (see below), ADempiere is a community-focused ERP suite that adds customer relationship management (CRM) and point-of-sale (POS) features. It handles sales, purchasing, manufacturing management, material management, finance, human resources, project management and more. Operating System: Windows, Linux, OS X
25. Apache OFBiz
Replaces NetSuite , Epicor, Sage ERP
This Apache project calls itself an "enterprise automation" solution. In addition to ERP capabilities, it offers customer relationship management, e-commerce, supply chain management, manufacturing resources planning, maintenance management system/enterprise asset management, point-of-sale and other abilities. Operating System: OS Independent
26. Compiere ERP + CRM Business Solution
Replaces SAP, Microsoft Dynamics
Calling itself the "leading Cloud-based, open-source ERP software and customer relationship management (CRM) system," Compiere claims to be modern, adaptable and affordable. It comes in community and enterprise editions, as well as a cloud version that runs on Amazon Web Services. Operating System: Windows, Linux, OS X
27. Dolibarr ERP/CRM
Replaces NetSuite , Epicor, Sage ERP
Best for small businesses, freelancers and foundations, Dolibarr can be used on a standalone system or on a server for multi-user access. Several vendors offer cloud-based versions as well. Operating System: OS Independent
28. ERP5
Replaces SAP, Microsoft Dynamics
In addition to standard ERP features, this app also offers CRM, MRP, SCM and product design management. Commercial support and services are available through third-party partners. Operating System: Linux
29. JFire
Replaces NetSuite , Epicor, Sage ERP
Java-based JFire aims to be a highly flexible ERP solution and includes a development platform for those who want to customize the software themselves. Paid coaching, consulting and development services are available. Operating System: OS Independent
30. Neogia
Replaces NetSuite , Epicor, Sage ERP
Designed for small to mid-sized businesses, Neogia offers a modular ERP with tools for tracking finance, e-commerce, manufacturing, sub-contractors, CRM, distribution, facilities, stock and e-commerce. The site includes an online demo so you can see it in action. Operating System: Windows, Linux
31. Openbravo ERP
Replaces SAP, Microsoft Dynamics
Used by more than 6,000 organizations around the world, Openbravo promises increased productivity, agility and return on investment. The community version is available for download on the website; the Professional Edition, Openbravo for Retail and the many commercial extension modules are available through Openbravo's retail partners. Operating System: OS Independent
32. Open ERP
Replaces SAP, Microsoft Dynamics
This very comprehensive ERP solution comes with about a dozen modules, including CRM, accounting, point-of-sale and others, and users can also download more than 700 extension modules. In addition to the free community version, it also comes in a paid on-site enterprise version and a paid cloud version. Operating System: Windows, Linux
33. opentaps
Replaces SAP, Microsoft Dynamics
Opentaps counts Toyota, Honeywell and some other well-known companies among its users. Besides the free, downloadable software, the company also offers paid update services, a professional edition, consulting, training and more. Operating System: Windows, Linux


34. Phreedom
Replaces NetSuite , Epicor, Sage ERP
This project began life as the Phreebooks accounting suite, but grew into a full-fledged ERP solution with tools for tracking inventory, contacts, shipping and more. Paid support is available on a per-hour basis. Operating System: OS Independent
35. Plazma ERP + CRM
Bringing IT Closer to Business
Download Now
Replaces NetSuite , Epicor, Sage ERP
Another solution for SMBs, Plazma includes tools for tracking contacts and accounts, sales and projects, orders and invoices, marketing compaigns, phone calls, meetings and document management. The interface is basic but easy to use. Note that it requires a SQL database in order to run. Operating System: Windows, Linux, OS X
36. Postbooks/xTuple ERP
Replaces NetSuite , Epicor, Sage ERP
xTuple claims to be the "worlds #1 open source ERP software." It comes in multiple versions that can run on-site or in the cloud; the PostBooks version is the one that's available as a free download with an open source license. Operating System: Windows, Linux, Unix, OS X
37. ]project-open[
Replaces NetSuite , Epicor, Sage ERP
More than 5,000 companies in 80 countries use this comprehensive enterprise project management tool. It includes modules for financial management, financial project controlling, project management, human resources, knowledge management, CRM and collaboration. Note that the full software is released under a mixed open source/commercial license. Operating System: OS Independent
38. SQL-Ledger
Replaces NetSuite , Epicor, Sage ERP
This Web-based ERP solution installs in just minutes and offers a very simple, intuitive interface. It also comes in an enterprise edition that includes technical and development support. Operating System: Windows, Linux, OS X
39. webERP
Replaces NetSuite , Epicor, Sage ERP
Although it can be used by any type of company, webERP is particularly well suited for wholesale, distribution and manufacturing businesses. Commercial support is available through several partners, including some of the main developers working on the project. Operating System: OS Independent

Investment Tracking and Management

40. EclipseTrader
Replaces StockMarketEye, TradeTrakker
EclipseTrader includes real-time quotes, intraday and historical charts, financial news, analysis tools and integrated trading capabilities. Aimed at serious traders, it collects a wealth of information in a single location. Operating System: Windows, Linux, OS X
41. iTrade
Replaces StockMarketEye, TradeTrakker
This app tracks market activity and your portfolio, gets quotes, draws charts, sends alerts and allows you to make some trades. It includes support for international markets, multiple currencies and multiple languages. Operating System: Windows, Linux, OS X
42. JStock
Replaces StockMarketEye, Personal Stock Monitor, TradeTrakker
This Java-based app includes a stock watchlist, portfolio management tools, alerts, filtering, charting, currency exchange and more. It also includes optional cloud storage, and an Android version is in the works. Operating System: Windows, Linux, OS X
43. Premium Markets
Replaces StockMarketEye, TradeTrakker
This investment tracking tool focuses on analysis and trend forecasting. It also offers portfolio management and data charting capabilities. Operating System: Windows, Linux, OS X

Microfinance

44. Mifos
Replaces Loan Performer, Temeno Microfinance & Community Banking
Mifos aims to help microfinance institutions do a better job of providing loans to poor people around the world. It's a web-based management information system (MIS) that includes "portfolio and transaction management, on-the-fly financial product creation, in-depth client management, integrated social performance measurement, and a reporting engine." Operating System: OS Independent
45. Octopus
Replaces Loan Performer, Temeno Microfinance & Community Banking
Octopus describes itself as a "next-generation" MIS for microfinance lenders. It comes in Community (free), Professional (paid) and Online (paid) versions. Operating System: Windows

Personal Financial Management

46. Buddi
Replaces Quicken, Mint.com
The “personal budget software for the rest of us,” Buddi aims to help people with very little financial knowledge track their personal finances. It's not as advanced as Quicken, but it is extremely easy to use. Operating System: OS Independent
47. Grisbi
Replaces Quicken Home and Business
This option can track finances for a small or home-based business in addition to personal finances. At the time of writing, the home page was under construction, but the software download is still available through SourceForge. Operating System: Windows, Linux
48. dsBudget
Replaces Quicken Home and Business
This bare-bones budgeting application helps answer the question, "Where did my money go?" You can install on your local system, on a USB stick or on Dropbox. Operating System: Windows, Linux, OS X
49. HomeBank
Replaces Quicken, Mint.com
HomeBank offers "free, easy, personal accounting for everyone." The project has been around for eighteen years and includes features like import/export from other financial software, duplicate detection, transactions, budgeting, reports and much more. Operating System: Windows, Linux


50. JGnash
Replaces Quicken, Mint.com
This Java-based personal finance system features double-entry accounting, account reconciliation, PDF report generation, auto-completion, recurring payments, multiple currency support and more. It aims to be easy to use, accurate and flexible. Operating System: Windows, Linux, OS X
51. KMyMoney
Harness the Power of Data Visualization to Transform Your Business
Download Now
Replaces Quicken, Mint.com
Designed for the KDE desktop, KMyMoney attempts to duplicate most of the features you would find in commercial finance software, like Quicken. It's extremely easy to use and offers an extensive list of capabilities. Operating System: Windows, Linux, OS X
52. Money Manager Ex
Replaces Quicken, Mint.com
Money Manager Ex (a.k.a. MMEX) offers a simple, user-friendly interface that includes "all the basic features that 90% of users would want to see in a personal finance application." Key capabilities include AES encryption support, budgeting, depreciation tracking, reminders, one-click reporting, cash flow forecasting and more. Operating System: Windows, Linux, OS X
53. Yapbam
Replaces Quicken, Mint.com
Short for "yet another bank account manager," Yapbam is a Java-based, portable personal finance manager. It now integrates with Dropbox, making it easy to sync your financial information if you use multiple devices. Operating System: Windows, Linux, OS X

Professional Services Automation (PSA)

54. allocPSA
Replaces NetSuite OpenAir, Projector PSA, Q360
PSA software is similar to ERP software, but designed to meet the needs of services businesses, like consultants, IT outsourcers, marketing agencies, engineering firms, etc. This app includes help-desk, sales, time-sheeting, CRM, project tracking and other features, and it comes in the open source version or a fee-based SaaS version. Operating System: OS Independent

Point-of-Sale (POS)

55. Floreant POS
Replaces QuickBooks Point-of-sale, AccuPOS
Designed to meet the unique needs of restaurants, this POS system includes the Denny's chain among its users. Paid support is available. Operating System: OS Independent
56. LemonPOS
Replaces QuickBooks Point-of-sale, AccuPOS
Based on MySQL, LemonPOS offers multi-user POS capabilities for very small, small and medium-sized businesses. It boasts strong security, and it supports most bar code scanners and receipt printers. Operating System: Linux
57. POSper
Replaces QuickBooks Point-of-sale, AccuPOS
A good option for small businesses and restaurants, POSper integrates with touchscreens and includes a sizeable list of features. The website includes a helpful demo of the app's backoffice operations. Operating System: OS Independent
58. uniCenta
Replaces QuickBooks Point-of-sale, AccuPOS
Downloaded more than 75,000 times in just two years, this commercial-grade POS system was branched from Openbravo's POS. Paid support is coming soon, but wasn't available yet at the time of writing. Operating System: Windows, Linux, OS X

Spreadsheets

59. Gnumeric
Replaces Microsoft Excel, Lotus 1-2-3
Built for the GNOME desktop, Gnumeric can import files from Excel and other spreadsheet applications. It offers a whopping 596 different functions, including 204 that aren't included in competing software. Operating System: Windows, Linux
60. Calligra Sheets
Replaces Microsoft Excel, Lotus 1-2-3
Sheets is part of the Calligra office suite, which is based on the older KDE KOffice suite. It offers most common spreadsheet capabilities, "but in a much more responsive application." Operating System: Windows, Linux
61. LibreOffice Calc
Replaces Microsoft Excel, Lotus 1-2-3
Calc, the spreadsheet program in LibreOffice, easily imports data from other spreadsheet or database and performs all of the calculations you would expect. It's based on the Calc program in OpenOffice.org (see below), with some slight improvements. Operating System: Windows, Linux, OS X
62. OpenOffice.org Calc
Replaces Microsoft Excel, Lotus 1-2-3
This version of Calc is part of Apache's OpenOffice.org suite. It offers an intuitive interface and advanced features like wizards, data pilot technology, the intelligent sum button, natural language formulas, a scenario manager and more. Operating System: Windows, Linux, OS X

Baca Selengkapnya ....

Android Adventures - Activity And UI

Posted by Unknown 0 komentar
http://www.i-programmer.info/programming/android/5914-android-adventures-activity-and-ui.html


So you know how to create an Android app, but do you really know how it works? In this second part of our new ebook on getting started with Android using Android Studio we look at how to create a UI and how to hook it up to the code in the Activity.

Android Adventures With Android Studio

Contents
  1. Getting Started With Android Studio
  2. The Activity And The UI
Androidgears

We discovered in Chapter 1 how to use Android Studio  Google's new Android IDE, to build the simplest possible app. On the way we discovered that an Android app consists of two parts - an Activity and a View.
The Activity is the Java code that does something and the View provides the user interface (UI). You can think of this duality as being similar to the HTML page and the JavaScript that runs to make it do something, or as a XAML form and the code behind.
The key idea is that an Activity is the code that works with a UI screen defined by the View. This isn't quite accurate in that an Activity can change its view so that one chunk of Java code can support a number of different views. However, there are advantages to using one Activity per view because, for example, this how the Android back button navigates your app - from Activity to Activity.  A complex app nearly always consists of multiple Activities that the user can move between like web pages but a simple app can manage quite well with just one Activity.
There is no hard and fast rule as to how many Activities your app has to have - but it has to have least one.
If you are wondering if an Activity can exist without a View the answer is that it can, but it doesn't make much sense as this would leave the user with no way to interact with your app. Activities are active when their View is presented to the user.
It really is a great simplification to think in terms of an Activity corresponding to a single screen with a user interface.
If you want something to run without a UI then what you want is a service or a content provider - more of which much later.
It is also worth making clear at this early stage that an Activity has only one thread - the UI thread - and you need to be careful not to perform any long running task because this would block the UI and make your app seem to freeze. Also notice that creating additional Activities doesn't create new threads. Only one Activity is active at any given time - more of this later when we consider the Activity lifecycle in detail.
In other words, Activities are not a substitute for knowing about threading.
For the moment let's concentrate on the single screen UI Activity because it is the most common app building block you will encounter.

The MainActivity

There is of course one activity that is nominated as the one to be launched when you app starts. If you create a new app called SimpleButton and accept all the defaults then the startup Activity is called MainActivity by default.
You can change which Activity starts the app by chaining a line in the app's manifest. The Manifest is a project file we haven't discussed before because if you are using Android Studio you can mostly ignore it but it is better if you know it exists and what it does.
The Manifest is stored in the src/main directory and it is called AndroidManifest.xml. It is an XML file that tells the Android system everything it needs to know about you app. In particular it lists all of the activities and which one is the one to use to start the applications.
If you open the generated Manifest you will see:
 android:name=
 "com.example.simplebutton.MainActivity"
    android:label="@string/app_name" >

This defines the Activity the system has created for you and the lines:
 
      "android.intent.action.MAIN" />
      "android.intent.category.LAUNCHER" />
 

Define it as the startup Activity. Notice which Activity starts the app has nothing to do with what you call it i.e. calling it MainActivity isn't enough.
For the moment you can rely on Android Studio to look after the Manifest for you.

Inside the Activity

The generated Activity has two methods defined but the important one is onCreate. This is an event handler and it is called when you app is first created. This is the place we do all the initializations and setting up for the entire app. It is also generally the place we show the app's main UI screen.
Let's take another look at the generated code for onCreate:
@Override
protected void onCreate(Bundle
                          savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
}

The onCreate event handler is passed a Bundle object called savedInstanceState. This is intended to preserve state information between invocations of you app and we will see how this is used later. In this case no data has been saved and so savedInstanceState is null - but you still have to pass it on to the inherited onCreate method.
The final instruction calls setContentView which is a method that has a number of different overloaded forms. In this case we pass an integer that indicates which XML file describes the layout to be used fro the view. The R object is constructed by the system to reflect the resources you have placed in the resource directories. In this case R.layout.activity_main returns an integer value that allows the setContentView method to find the activity_main XML layout file.

View and ViewGroup

Ok so far so good but it is important to realize that what happens next it that the XML file is rendered as a set of View objects. The entire UI and graphics system is implemented as a hierarchy of components derived from the view class. If you have used almost any GUI framework - AWT, Swing, XAML etc - then this idea will not be new to you.
For example, a button is a class derived from view and to create a button all you have to do is create an instance of the button class.  You can, of course create as many buttons as you like simply by creating more instances.
This leaves open the question of where the button appears in the layout? The answer to this is that there are ViewGroup objects which act as containers for other view objects. You can set the position of the child view objects or just allow them to be controlled by various layout rules - more of which later.
You can opt to create the entire UI in code by creating and working with instances of view objects.
Alternatively you can use XML to define view objects and how they nest one within another and rely on the system to create the view object hierarchy for you.
The simplest way however is to use the designer to create the XML file and then allow the system to create the objects for you from the generated XML file.


Connecting the Activity to the UI

Now we have an event handler hooked up to the button click event we usually want to do something that affects the UI as a result. Let's suppose that when the button is clicked we want to change the text displayed in the Large Text widget to "You Clicked Me!". We can do this by changing the Large Text widget;s text property to the new text. The only problem is how do we find the Large Text widget in code?
This is a fairly standard problem when you use a markup language to define a UI. The markup language defines widgets or other UI objects and the code has to have a way of making the connection to those UI objects. For example in JavaScript you make use of the getElementById method to retrieve a DOM object corresponding to a particular HTML element. In Android we do something similar.
First make sure you follow the idea that all of the XML generated by the designer gets converted into a set of Java objects, one for each widget or view placed on the design surface. These objects have the same range of properties as you saw in the Properties window and methods to get other things done. All you need to do if find a way to reference them.
In the case of the view object that caused the event this is very easy as it is passed to the event handler as the only argument of the call. So if the event handler is:
public void buttonOnClick(View v) {
and the event handler is only hooked up to the button then you can be 100% sure that v is the button object. So if you want to change the button's caption you could just use its setText method to change its value.
Note: if you aren't used to Java then it is worth pointing out that generally all Java frameworks follow the rule that if an object has a property called myProperty, visible as such in the Property window then in code you set it using setMyProperty and retrieve it using getMyProperty. 
So all you have to write is:
v.setText("I've Been Clicked!");
but this doesn't work because v is a general View object which doesn't have a setText method. To call the Button's setText method we have to cast v to its correct type - a Button.
Note: casting is where you tell the system the type fo the object you are working with. If classB is a subclass of classA then you can treat a classB object as a classA - after all it has all of the methods and properties that classA does by inheritance. However if you want to make use of a property or method that only classB has then you need to cast the reference to the  classB object to make its type clear.
For example. assuming classB inherits from classA: 
classA myObject = new classB();
creates an instance of classB but myObject is decleared to be of type classA.  This is fine but you can only access the methods and properties of the classA object. If you try
myObject.classBMethod();
then it will fail if classBMethod only exists in classB. To use the classB method you have to cast myObject to its real type:
(classB) myObject
You can store a reference to the cast in a new variable:
classB myClassBObject = (classB) myObject;
and then call the method
myClassBObject.classBMethod();
or you can just do the cast on the fly at the cost of an extra pair of parentheses:
((classB) myObject).classBMethod();

However if you simply use add the cast to Button you will discover that Android Studio flags an error by showing Button in red.

 cast

If you look at the error message it suggests pressing Alt+Enter which is always good advice because it produces a list of possible fixes for the problem. In this case you have to add the class definition to the start of the program.
import android.widget.Button;

It will also offer to split the declaration and the assignment as being better style - for the moment let's stick with the single line.
Button button=(Button) v;
Now we have the button object we can call its setText method:
button.setText("I've Been Clicked!");
Now if you run the program you will see the button's caption change when you click the button.
Notice that this approach only works if you know the type of the object that caused the event and called the event handler. If you don't then you can use the getId method to discover the view's id and write a switch to deal with each possible type in turn.
Now suppose we want to do something to one of the other widgets in the view. In this case we have to find the object that represents the widget without the help of the event handler's argument. For example how do we find the TextView that we placed below the button?
This is a very standard pattern in working with view objects from the Activity. First you make use of the R object to find the widget's id. In this case the TextView has been given the id textView by default so we can use:
R.id.textView:
and this returns a unique integer that identifies the widget. Next we use the Activities findViewById(int) method which takes the integer id and returns the Java object corresponding to id. Of course this is returned as a View object because findViewById doesn't know the type of the object it returns any more accurately. So we have to cast to make use of the TextView object.
Putting all this together gives:
TextView myTextView=(TextView)
                   findViewById(R.id.textView);

Once again Android Studio will complain about TextView and if you press Alt+Enter it will add the class import to the start of the program for you:
import android.widget.TextView;

Now that you have the TextView object you can use the setText method to change what it displays:
 myTextView.setText("You Clicked Me!");
The complete event handler is:
public void buttonOnClick(View v) {
 Button button=(Button) v;
 button.setText("I've Been Clicked!");
 TextView myTextView=(TextView)
                 findViewById(R.id.textView);
 myTextView.setText("You Clicked Me!");
}

If you now run the program you will see that you are informed twice of the fact that this very important button has been clicked:

buttonfinal

You may think that this is all very small stuff and nothing like a real app but this is how building a UI works in Android. You now know how to design a single screen app using the widgets available in the designer toolbox and how to hook them up to handle their events, find Java object that represent with them and how to call methods that modify them.
Apart from the fine detail of how each of the widgets works - radio buttons, checkboxes and so on you now have the general outline of how to build a single screen app.


Summary 

  • An Activity is the unit of the Android app and it roughly corresponds to one screen full of user interface plus the code to make it work.
  • In most cases you will create an Activity for each UI screen you want to present to your user.
  • Only one Activity from you app is running at any given time.
  • An Activity is single threaded and runs on the UI thread.
  • You can set which Activity starts the app in the Manifest - Android Studio sets this to MainActivity by default.
  • The Activity has events corresponding to different stages in it lifecycle. The onCreate event is called when the app first starts and this is where you perform all initialization.
  • You can restore the apps state from previous runs at this point.
  • The Activity then loads a View or ViewGroup object to create its user interface.
  • You can create View/ViewGroup objects in three possible ways: in code, using XML or using the designer to generate the XML.
  • The designer is far the easiest way to create a UI.
  • By opening the XML file you can use the designer to place widgets corresponding to View objects on the design surface.
  • You can use the property window to set the properties of each widget.
  • The XML file that the designer creates is used by the Activity to set its UI by creating Java object that correspond to each of the View objects placed using the designer.
  • You can hook up event handlers defined within the current Activity to the widgets using the event properties in the Properties window e.g. the onClick.
  • An event handler is just a public function with the signature myEventHandler(View v)
  • The View object parameter is set to the View object that raised the event. This can be used to access the properties/methods of the View object that the user interacted with.
  • To access other View  objects you follow the standard pattern of:
    1. Find the integer id via the string id, set in the designer, of the widget using resource object R.id.stringId.
    2. Use the integer id to retrieve the Java object corresponding to the widget using findViewById(intId)
    3. Work with the object's methods/properties to modify it.

    Androidgears

    Android Adventures With Android Studio

    Contents
    1. Getting Started With Android Studio
    2. The Activity And The UI

    Coming Next

    In the next installment we'll discover how to use layouts and some of the details of the basic widgets.
    Meanwhile if you have any questions on what we've covered so far please let me know using the comments.
    You can download the code for this program from the CodeBin (note you have to register first).

    To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter,FacebookGoogle+ or Linkedin,  or sign up for our weekly newsletter.



    Baca Selengkapnya ....

    How to boost up your Android RAM With out programs

    Posted by Unknown Selasa, 04 Juni 2013 0 komentar
    Of the problems faced by users after purchase Android device and use the device period are OK, start the emergence of a problem using the device of RAM, or random memory, especially in devices with memory random low as 512 MB or 768 MB, and thus result in use of large applications of RAM to the lack of response device and the emergence of slow movement between interfaces and applications do not run fast enough, and the many problems we do not need, so I decided to put some tips and solutions for the benefit beginners and everyone, including:


    1 - not launcher mode or live wallpaper, especially if the live background contains a lot of 3D elements, leads to the consumption of power first, and then the higher use of RAM .. It is only possible to simply live a simple background or fixed.

    2 - delete applications that do not use, you do not use on a daily basis or do not need them ... etc, it reduces the amount of installed applications, thus reducing the use of  RAM.

    3 - stop services operated applications, and by going to Settings> manage applications> applications services operator will then see services operator of applications we need not go to a particular application and we press it and then we press Stop.

    4 - Delete RAM traditionally, so by going to the task manager and then random access memory (RAM) and then pressing the Delete memory as in the picture :


    Note : This method may not be very effective in reducing the use of  RAM as after pressing the delete memory reduces use a little but do not pass seconds, only to come back the RAM again to its original condition but I just have set for it to be desirable in some cases.

    5 - not out of the applications by the home button, he leaves the application is still running, but you must exit through the back button.

    In the end: this was just tips for beginners to avoid the use of the higher RAM .. and I hope I have managed even a little bit, and I welcome any inquiry within Comments.

    Baca Selengkapnya ....

    7 Tips to keep the battery of Iphone5 charged in

    Posted by Unknown 0 komentar
    A lot of iPhone4s  and iphone 5 owners suffering  from premature entry into force of the battery in their devices, especially IPhone 5 devices and specifically in ios7
    On this subject I'm going to throw7 tips that they might improve their performanceBattery in their devices:

    1. Close all the programs in the backgroundon a regularbasis
    2.Reset the network settings by goingto the settings > Reset > Reset>network settings
    3.Ping off by going to Settings> General> Restrictions> enable restrictions> Ping> Stop
    4.Stop diagnostic reports and usage by going tosettings> General> About> Use and diagnosis> Do not Send
    5.Stop alerts and unwanted applications by going to Settings> Notifications> and then work off any thing you do not need
    6.Stop alerts and unwanted applications by going to Settings> Notifications> and then work off any thing you do not need
    7.Turn off Bluetooth (in the case of non-use) for-road by going to settings> General> Bluetooth> then off

    8.Stop places service by going to Settings> Web Service Settings> and then work offthe services thatyou do not use

    Baca Selengkapnya ....

    Understanding free command in Linux/Unix

    Posted by Unknown Minggu, 02 Juni 2013 0 komentar
    http://www.linuxnix.com/2013/05/find-ram-size-in-linuxunix.html


    free is a command which can give us valuable information on available RAM in Linux machine. But many new Linux users and admins misinterpret its output. In this post we will walk through its output format and show you actual free RAM.

    Free command examples

    Example 1: Display RAM details in Linux machine
    free
    Output:
    total used free shared buffers cached
    Mem: 8027952 4377300 3650652 0 103648 1630364
    -/+ buffers/cache: 2643288 5384664
    Swap: 15624188 608948 15015240
    Let us see what this table for you.
    Line 1: Indicates Memory details like total available RAM, used RAM, Shared RAM, RAM used for buffers, RAM used of caching content.
    Line 2: Indicates total buffers/Cache used and free.
    Line 3: Indicates total swap memory available, used swap and free swap memory size available.
    Let us dig more in to these lines to better understand it as Linux user prospective.
    Line 1:Mem: 8027952 4377300 3650652 0 103648 1630364
    8027952 : Indicates memory/physical RAM available for your machine. These numbers are in KB's
    4377300 : Indicates memory/RAM used by system. This include even buffers and cached data size as well.
    3650652 : Indicates Total RAM free and available for new process to run.
    0 :  Indicates shared memory. This column is obsolete and may be removed in future releases of free.
    103648 : Indicates total RAM buffered by different applications in Linux
    1630364 : Indicates total RAM used for Caching of data for future purpose.
    Puzzled with buffers and cache?

    What is the difference between buffers and Cache?

    A buffer is a temporary location to store data for a particular application and this data is not used by any other application. This is similar to bandwidth concept. When you try to send burst of data through network, if your network card is capable of sending less data, it will keep these huge amounts of data in buffer so that it can send data constantly in lesser speeds. In other hand Cache is a memory location to store frequently used data for faster access. Other difference between a buffer and a cache is that cache can be used multiple times where as buffer is used single time. And both are temporary store for your data processing.
    Line 2: -/+ buffers/cache: 2643288 5384664
    2643288 : This is actual size of used RAM which we get from RAM used -(buffers + cache)
    A bit of mathematical calculation
    Used RAM = +4377300
    Used Buffers = -103648
    Used Cache = -1630364
    Actual Total used RAM is 4377300 -(103648+1630364)= 2643288
    Then why my Linux machine is showing 4377300 as used RAM. This is because Linux counts cached RAM, Buffered RAM to this used RAM. But in future if any application want to use these buffers/cache, Linux will free it for you. To know more about this, visit this site.
    5384664 : Indicates actual total RAM available, we get to this number by subtracting actual RAM used from total RAM available in the system.
    Total RAM = +8027952
    actual used RAM = -2643288
    Total actual available RAM = 5384664
    So from today on words don't complaint that Linux ate your RAM, its our understanding of free command output which is the culprit and the teacher who thought us Linux. If any one asks what is the free RAM available, we have to give this number(5384664) instead of first line number(4377300) for free RAM available in your machine.
    Line 3: Swap: 15624188 608948 15015240
    This line indicates swap details like total SWAP size, used as well as free SWAP.
    Swap is a virtual memory created on HDD to increase RAM size virtually. To know more about swap click here for creating swap partition and here for swap file creation.
    Example2: Display RAM in human readable formats like in KB's, MB's, GB's, TB's
    free -k
    free -m
    free -g
    free –tera
    Output:
    root@linuxnix.com:/home/surendra# free -k
    total used free shared buffers cached
    Mem: 8027952 5323952 2704000 0 116876 1626940
    -/+ buffers/cache: 3580136 4447816
    Swap: 15624188 603792 15020396
    root@linuxnix.com:/home/surendra# free -m
    total used free shared buffers cached
    Mem: 7839 5197 2642 0 114 1588
    -/+ buffers/cache: 3495 4344
    Swap: 15257 589 14668
    root@linuxnix.com:/home/surendra# free -g
    total used free shared buffers cached
    Mem: 7 5 2 0 0 1
    -/+ buffers/cache: 3 4
    Swap: 14 0 14
    root@linuxnix.com:/home/surendra# free –tera
    total used free shared buffers cached
    Mem: 0 0 0 0 0 0
    -/+ buffers/cache: 0 0
    Swap: 0 0 0
    Note: If you observe with option –tera, the RAM size shows as 0, this is because my RAM is just 8GB and the output of free command will not support floating point numbers.
    Example3: My actual RAM is 8GB but it is showing 7GB when using -g option, whats wrong with my RAM. This is because free command by default counts 1024 as power instead of 1000. To see difference use –si
    With out –si
    free -g
    Output:
    total used free shared buffers cached
    Mem: 7 5 2 0 0 1
    -/+ buffers/cache: 3 4
    Swap: 14 0 14
    with –si
    free –si -g
    Output:
    total used free shared buffers cached
    Mem: 8 5 2 0 0 1
    -/+ buffers/cache: 3 4
    Swap: 15 0 15

    Example 4: Want to see combined size of both swap as well as RAM use -t option
    free -t
    Output:
    total used free shared buffers cached
    Mem: 8027952 5369012 2658940 0 117228 1634396
    -/+ buffers/cache: 3617388 4410564
    Swap: 15624188 603788 15020400
    Total: 23652140 5972800 17679340
    Example 5: I want to see continuous varying of RAM usage for every second, use -s option to mention number of seconds
    free -s 1
    Output:
    total used free shared buffers cached
    Mem: 8027952 5370220 2657732 0 117376 1635144
    -/+ buffers/cache: 3617700 4410252
    Swap: 15624188 603788 15020400 total used free shared buffers cached
    Mem: 8027952 5367244 2660708 0 117392 1635272
    -/+ buffers/cache: 3614580 4413372
    Swap: 15624188 603788 15020400 total used free shared buffers cached
    Mem: 8027952 5367556 2660396 0 117392 1635272
    -/+ buffers/cache: 3614892 4413060
    Swap: 15624188 603788 15020400 total used free shared buffers cached
    Mem: 8027952 5367388 2660564 0 117392 1635272
    -/+ buffers/cache: 3614724 4413228
    Swap: 15624188 603788 15020400
    This is not a good way to display continuous output, we can use watch command to do iterations
    watch free
    In out next post we will see other RAM details.

    Baca Selengkapnya ....

    Find USB device details in Linux/Unix using lsusb command

    Posted by Unknown 0 komentar
    http://www.linuxnix.com/2013/05/find-usb-device-details-in-linuxunix-using-lsusb-command.html


     Today we will see how to list USB devices in Linux and their properties such as speed, BUS, class, type details etc. This is part of our on going hardware detection series. We already covered following stuff.

    What is USB?

    USB(Universal Serial Bus) is a standerd developed to replace different types of BUS's available. This is a solution deviced to elemenate vender lockdown of hardware ports, so that BUS's will be identical across different devices from different venders. USB devices solve one more problem i.e. speeds. USB devies can reach up 5GB/s as of this writing where as PCI and serial devices have less speeds. Depending of USB frimware, its catagarize in to USB 1.0, USB 2.0, USB 3.0. USB have compititor in the from of Thunderbolt interface.
    As a Linux User/administrator we should know USB bus details as well as devices connected. In this post we will see how to use lsusb command to display different USB properties.

    Learn lsusb command with examples

    Example1: List all the USB ports available
    lsusb
    Output:
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 05c8:021e Cheng Uei Precision Industry Co., Ltd (Foxlink)
    Bus 001 Device 007: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
    Bus 002 Device 003: ID 0781:5567 SanDisk Corp. Cruzer Blade
    Let us try to understand above output in detail.
    Bus 002 Device 003: ID 0781:5567 SanDisk Corp. Cruzer Blade
    Bus 002 : This is bus number where SanDisk USB stick is attached.
    Device 003: This is the third device attached to bus 002, the other two devices are "Linux Foundation 2.0 root hub" and " Intel Corp. Integrated Rate Matching Hub"
    ID 0781:5567 is the number given to this SanDisk, The nember before : indicates the manufacture ID and number after : indicates device ID. To get more info on this visit Linux-USB site.
    SanDisk Corp. Cruzer Blade is the name of manafacutre and device name.
    Example 2: Check how many USB ports available in your machine so that we can connect USB devices to these ports.
    find /dev/bus/
    Output:

    /dev/bus/
    /dev/bus/usb
    /dev/bus/usb/002
    /dev/bus/usb/002/006
    /dev/bus/usb/002/005
    /dev/bus/usb/002/004
    /dev/bus/usb/002/002
    /dev/bus/usb/002/001

    /dev/bus/usb/001
    /dev/bus/usb/001/007
    /dev/bus/usb/001/003
    /dev/bus/usb/001/002
    /dev/bus/usb/001/001
    These ports may be internal or external to the system.
    Example3 : Get detailed information of a USB device connected to a machine. Suppose I want to see information about /dev/bus/usb/002/005 device use below command
    lsusb -D /dev/bus/usb/002/005
    Output:

    Device: ID 0951:1643 Kingston Technology DataTraveler G3 4GB
    Couldn't open device, some information will be missing
    Device Descriptor:
    bLength 18
    bDescriptorType 1
    bcdUSB 2.00
    bDeviceClass 0 (Defined at Interface level)
    bDeviceSubClass 0
    bDeviceProtocol 0
    bMaxPacketSize0 64
    idVendor 0×0951 Kingston Technology
    idProduct 0×1643 DataTraveler G3 4GB
    bcdDevice 1.00
    iManufacturer 1
    iProduct 2
    iSerial 3
    bNumConfigurations 1
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 32
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0×80
    (Bus Powered)
    MaxPower 200mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 2
    bInterfaceClass 8 Mass Storage
    bInterfaceSubClass 6 SCSI
    bInterfaceProtocol 80 Bulk-Only
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0×81 EP 1 IN
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0×0200 1x 512 bytes
    bInterval 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0×02 EP 2 OUT
    bmAttributes 2
    Transfer Type Bulk
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0×0200 1x 512 bytes
    bInterval 0
    To know each of these types, click here.
    Example 3: Get all the USB ports available and devices connected using verbose mode.
    lsusb -v
    Clipped output:
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Couldn't open device, some information will be missing
    Device Descriptor:
    bLength 18
    bDescriptorType 1
    bcdUSB 2.00
    bDeviceClass 9 Hub
    bDeviceSubClass 0 Unused
    bDeviceProtocol 1 Single TT
    bMaxPacketSize0 64
    idVendor 0×8087 Intel Corp.
    idProduct 0×0024 Integrated Rate Matching Hub
    bcdDevice 0.00
    iManufacturer 0
    iProduct 0
    iSerial 0
    bNumConfigurations 1
    Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 25
    bNumInterfaces 1
    bConfigurationValue 1
    iConfiguration 0
    bmAttributes 0xe0
    Self Powered
    Remote Wakeup
    MaxPower 0mA
    Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 1
    bInterfaceClass 9 Hub
    bInterfaceSubClass 0 Unused
    bInterfaceProtocol 0 Full speed (or root) hub
    iInterface 0
    Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0×81 EP 1 IN
    bmAttributes 3
    Transfer Type Interrupt
    Synch Type None
    Usage Type Data
    wMaxPacketSize 0×0001 1x 1 bytes
    bInterval 12
    Example 4: List all mass storage devices in your system.
    lsusb -v | grep -Ei '(idVendor|Mass\ Storage)'
    Output:
    idVendor 0×2006
    bInterfaceClass 8 Mass Storage
    idVendor 0×0781 SanDisk Corp.
    bInterfaceClass 8 Mass Storage
    idVendor 0×0951 Kingston Technology
    bInterfaceClass 8 Mass Storage
    From the above output we can find that there are total three USB storage devices present on the machine.
    Example 5: Find USB devices protocol version.
    lsusb -v | grep -i bcdusb
    Output:
    bcdUSB 1.10
    bcdUSB 2.00
    bcdUSB 2.00
    bcdUSB 2.00
    Depending on the version, the speed varies. Below table give you clear idea about the speeds associated with these versions.
    USB 1.10 12Mb/s
    USB 2.00 480Mb/s
    USB 3.00 5Gb/s
    Example 6: Find USB device supported speeds by using tree structure option
    lsusb -t
    Otuput:
    2-1.1:1.1: No such file or directory
    /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
    |__ Port 1: Dev 6, If 0, Class=stor., Driver=usb-storage, 480M
    |__ Port 1: Dev 6, If 1, Class=vend., Driver=, 480M
    |__ Port 2: Dev 7, If 0, Class=stor., Driver=usb-storage, 480M
    |__ Port 3: Dev 5, If 0, Class=stor., Driver=usb-storage, 480M
    /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
    |__ Port 3: Dev 3, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 3: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 4: Dev 7, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
    |__ Port 4: Dev 7, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
    In our next post we will see other hardware device properties.

    Baca Selengkapnya ....

    Largest Gallery of samsung galaxy s4 mini

    Posted by Unknown Sabtu, 01 Juni 2013 0 komentar
    Samsung launches its mini-version of the Samsung Galaxy S4  as we talked in the previous topic(Specifications of the new Samsung Galaxy S4 mini| )
    on the wonderful phone features we come to you today with the amazing pictures of this beautiful phone from all angles, you will find the two colors of phone black and white.
     follow the phone images
    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini black

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini black

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    GAlaxy s4 mini

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini black

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini white

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini white

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini white

    Galaxy s4 mini,mini galaxy s4 ,galaxy s4 2014,photo oh galaxy s4
    Galaxy s4 mini white
    Ihope to like This Photos of New samsung s4 mini.
    ..................................
    If you Like it >> Share it.

    Baca Selengkapnya ....
    Trik SEO Terbaru support Online Shop Baju Wanita - Original design by Bamz | Copyright of android japan.