Showing posts with label founder. Show all posts
Showing posts with label founder. Show all posts

Friday, 1 April 2016

HB Blog 107: Android Camera Using Intents And Custom Interface.

Android, Inc. was founded in Palo Alto, California in October 2003 by Andy Rubin (co-founder of Danger), Rich Miner (co-founder of Wildfire Communications, Inc.), Nick Sears (once VP at T-Mobile), and Chris White (headed design and interface development at WebTV) to develop, in Rubin's words, "smarter mobile devices that are more aware of its owner's location and preferences". The early intentions of the company were to develop an advanced operating system for digital cameras. Though, when it was realized that the market for the devices was not large enough, the company diverted its efforts toward producing a smartphone operating system.

The Android framework includes support for various cameras and camera features available on devices, allowing you to capture pictures and videos in your applications. We can develop camera applications using existing camera as well as create our own custom camera based on the requirement of the application.
Using Existing Camera Apps: -
We can use basic intents to start to invoke an existing Android camera application. A camera intent makes a request to capture a picture or video clip through an existing camera app and then returns control back to your application.

The procedure for invoking a camera intent follows these general steps:
    Compose a Camera Intent - Create an Intent that requests an image, using one of these intent types:
     MediaStore.ACTION_IMAGE_CAPTURE - Intent action type for requesting an image from an existing camera application.
    Start the Camera Intent - Use the startActivityForResult() method to execute the camera intent. After you start the intent, the Camera application user interface appears on the device screen and the user can take a picture or video.
    Receive the Intent Result - Set up an onActivityResult() method in your application to receive the callback and data from the camera intent. When the user finishes taking a picture or video (or cancels the operation), the system calls this method.

Building a Camera App: -
Creating custom camera is not as simple as calling intent and few lines of code.

The general steps for creating a custom camera interface for your application are as follows:
    Detect and Access Camera - Create code to check for the existence of cameras and request access.
    Create a Preview Class - Create a camera preview class that extends SurfaceView and implements the SurfaceHolder interface. This class previews the live images from the camera.
    Build a Preview Layout - Once you have the camera preview class, create a view layout that incorporates the preview and the user interface controls you want.
    Setup Listeners for Capture - Connect listeners for your interface controls to start image or video capture in response to user actions, such as pressing a button.
    Capture and Save Files - Setup the code for capturing pictures or videos and saving the output.
    Release the Camera - After using the camera, your application must properly release it for use by other applications.

Saturday, 5 September 2015

HB Blog 93: Google Brillo - Operating System For Internet Of Things.

Project Brillo is an Android-based embedded operating system platform by Google. It is aimed to be used with low-power and memory constrained IoT devices. The Internet of Things (IoT, sometimes Internet of Everything) is the network of physical objects or "things" embedded with electronics, software, sensors, and connectivity to enable objects to exchange data with the manufacturer, operator and/or other connected devices based on the infrastructure of International Telecommunication Union's Global Standards Initiative. The Internet of Things allows objects to be sensed and controlled remotely across existing network infrastructure, creating opportunities for more direct integration between the physical world and computer-based systems, and resulting in improved efficiency, accuracy and economic benefit.
Project Brillo: -
Brillo extends the Android platform to all your connected devices, so they are easy to set up and work seamlessly with each other and your smartphone. Since, it is based on the lower levels of Android, you can choose from a wide range of hardware platforms and silicon vendors. Basically, hardware systems will controlled and communicate with each other such as door locks, heater & cooler systems, etc. in single language medium to communicate with each other. It supports Wi-Fi and Bluetooth Low Energy to connect to various, random objects in your home that allow Android connectivity.
OEM's will build devices quickly and securely, without having to worry about software updates. Just need to add a compatibility library to connect with Brillo devices over Weave. For developers it extends the reach of their apps to the physical world. They need app to control multiple devices in the home and work environments, leveraging Google services such as voice actions. Finally, all Brillo devices(hardware systems) will move ahead of different hardware barriers and will communicate with each other in single language medium known as Weaver. 
Weaver Language: -
Weave is a universal language that all devices that Project Brillo use. It provides seamless and secure communication between devices both locally and through the cloud. It’s integrated into Google Play services, so support is built-in to Android and also easily available for iOS. This program will drive interoperability and quality through a certification program that device makers must adhere to. As part of this program, It provides a core set of schemas that will enable apps and devices to seamlessly interact with each other. Weaver language will act as  a medium to communicate Brillo devices with phone and access data over cloud system.

Tuesday, 1 September 2015

HB Blog 91: Android Studio's Attractive Features.

Android Studio is the official IDE for Android application development, based on IntelliJ IDEA.
Android Studio offers:
    Flexible Gradle-based build system
    Build variants and multiple apk file generation
    Code templates to help you build common app features
    Rich layout editor with support for drag and drop theme editing
    lint tools to catch performance, usability, version compatibility, and other problems
    ProGuard and app-signing capabilities
    Built-in support for Google Cloud Platform, making it easy to integrate Google Cloud Messaging and App Engine
    And much more.


Most attractive features of android studio from a developer perspective are as follows:-

1)Android Studio allows you to work with layouts in both a Design View. Easily select and preview layout changes for different device images, display densities, UI modes, locales, and Android versions (multi-API version rendering).
From the Design View, you can drag and drop elements from the Palette to the Preview or Component Tree. The Text View allows you to directly edit the XML settings, while previewing the device display.
It updates preview of the layout xml while creating UI which provides read–eval–print loop (REPL) kind of features.

2)Android Studio provides a memory and CPU monitor view so you can more easily monitor your app's performance and memory usage to track CPU usage, find deallocated objects, locate memory leaks, and track the amount of memory the connected device is using. With your app running on a device or emulator, click the Android tab in the lower left corner of the runtime window to launch the Android runtime window. Click the Memory or CPU tab.
When you're monitoring memory usage in Android Studio you can, at the same time, initiate garbage collection and dump the Java heap to a heap snapshot in an Android-specific HPROF binary format file. The HPROF viewer displays classes, instances of each class, and a reference tree to help you track memory usage and find memory leaks.
Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory allocation allows you to monitor where objects are being allocated when you perform certain actions. Knowing these allocations enables you to adjust the method calls related to those actions to optimize your app's performance and memory use.

3)Android Studio projects contain a top-level build file and a build file for each module. The build files are called build.gradle, and they are plain text files that use Groovy syntax to configure the build with the elements provided by the Android plugin for Gradle. In most cases, you only need to edit the build files at the module level. For example, the build file for the app module in the BuildSystemExample project looks like this:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

 4)The build system can help you create different versions of the same application from a single project. This is useful when you have a demo version and a paid version of your app, or if you want to distribute multiple APKs for different device configurations on Google Play.
The build system uses product flavors to create different product versions of your app. Each product version of your app can have different features or device requirements. The build system also uses build types to apply different build and packaging settings to each product version. Each product flavor and build type combination forms a build variant. The build system generates a different APK for each build variant of your app.
To define two product flavors, edit the build file for the app module to add the following configuration:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
...
android {
    ...
    defaultConfig { ... }
    signingConfigs { ... }
    buildTypes { ... }
    productFlavors {
        demo {
            applicationId "com.buildsystemexample.app.demo"
            versionName "1.0-demo"
        }
        full {
            applicationId "com.buildsystemexample.app.full"
            versionName "1.0-full"
        }
    }
}
...
The product flavor definitions support the same properties as the defaultConfig element. The base configuration for all flavors is specified in defaultConfig, and each flavor overrides any default values. The build file above uses the applicationId property to assign a different package name to each flavor: since each flavor definition creates a different app, they each need a distinct package name.

5)With smart rendering, Android Studio displays links for quick fixes to rendering errors. For example, if you add a button to the layout without specifying the width and height attributes, Android Studio displays the rendering message Automatically add all missing attributes. Clicking the message adds the missing attributes to the layout.
While debugging, you can now right-click on bitmap variables in your app and invoke View Bitmap. This fetches the associated data from the debugged process and renders the bitmap in the debugger.
When referencing images and icons in your code, a preview of the image or icon appears (in actual size at different densities) in the code margin to help you verify the image or icon reference. Pressing F1 with the preview image or icon selected displays resource asset details, such as the dp settings.  

Tuesday, 9 September 2014

HB Blog 18: Famous Personalities.

         We can't imagine life without these people and their successful journey of work. I personally idolize them.
Charles Babbage,(December 26, 1791 – October 18, 1871) - Father of the computer
He was an English polymath.He was a mathematician, philosopher, inventor and mechanical engineer, who is best remembered now for originating the concept of a programmable computer.He is considered as "father of the computer".

Alexander Graham Bell (March 3, 1847 – August 2, 1922)  - Telephone Inventor
He was an eminent Scottish-born scientist, inventor, engineer and innovator who is credited with inventing the first practical telephone.

Sir Timothy John "Tim" Berners-Lee (born 8 June 1955) - World Wide Web Inventor
He also known as "TimBL", is an English computer scientist, best known as the inventor of the World Wide Web.

Lawrence Gordon Tesler (born April 24, 1945) - Copy and Paste Inventor
He also known as "Larry Tesler", is a computer scientist who works in the field of human–computer interaction.Copy and paste was first implemented in 1973-1976 by Tesler and Tim Mott, while they were working for Xerox Palo Alto Research Center.

Lawrence "Larry" Page (born March 26, 1973) - Google co-founder
He is an American business magnate and computer scientist who is the co-founder of Google, alongside Sergey Brin.
Page is the inventor of PageRank, the foundation of Google's search ranking algorithm.

Sergey Mikhaylovich Brin (born August 21, 1973)  - Google co-founder
He is an American computer scientist and internet entrepreneur who, together with Larry Page, co-founded Google.

William Henry "Bill" Gates,(born October 28, 1955) - Microsoft co-founder
He is an American business magnate, philanthropist, investor, computer programmer, and inventor.Gates is the former chief executive and chairman of Microsoft, the world’s largest personal-computer software company, which he co-founded with Paul Allen.

Mark Elliot Zuckerberg (born May 14, 1984)  - Facebook co-founder
He is an American computer programmer and Internet entrepreneur. He is best known as one of five co-founders of the social networking website Facebook. 

Andrew E. "Andy" Rubin - Android Inc co-founder
He is the co-founder and former CEO of both Danger Inc. and Android Inc. He was formerly Senior Vice President of Mobile and Digital Content at Google until March 2013, where he oversaw development of Android, an open-source operating system for smart phones.Rubin has seventeen patents for his inventions.

Steven Paul "Steve" Jobs (February 24, 1955 – October 5, 2011) - Apple Inc co-founder
He was an American entrepreneur, marketer, and inventor, who was the co-founder, chairman, and CEO of Apple Inc.