(Android)Membuat Full Screen Layar Developer Android

Berbagi itu asik, itu kata kata teman ane pas ane lagi ngumpul ngumpul di kantin, ketika kita berbagi anggap saja semua itu benar, berbagi tidak hanya materi atau finansial, berbagi pengalaman itu sudah termasuk berbagi, betapa luar biasa amal teman teman ane yang selalu membagi cerita mereka sehingga membuat suasana menjadi lebih menarik, sama ketika kita membuat aplikasi yang membuat orang menjadi lebih tersenyum dengan aplikasi yang kita buat, kata lagi yang ane dapat dari sebuah jejaring sosial, wanita itu relatif tetapi photoshop itu alternatif, kata kata itu dapat di defenisikan bahawa sebuah karya ilmiah yang dibuat dapat di buat mejadi lebih menarik dengan beberapa tools.

Beberapa kata – kata yang ane bagi itu salah satu dari beberapa kata yang ane dapet, karena teman teman ane itu sering menciptakan kata – kata yang layak di publikasikan. tema kali ini kita akan membuat sebuah aplikasi dengan layar full, atau sering disebut dengan Full Screen sebenarnya pada SDK Android dan tools pendukung eclipse, sudah di beri example app yang menggunakan full screen, tetapi itu menurut ane terlalu ribet, kali ini hanya potongan yang ane dapet dari sana juga, kita hanya mengaktifkan fungsi itu, kita tidak lagi membuat fungsi itu sendiri, karena ketika resolusi layar berubah itu akan menyesuaikan dengan resolusi layar device tersebut.

Menambahkan Fungsi di bagian main.java

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
       getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login); 

jadi fungsi itu dapat dimasukkan di method main.

Fungsi Full Screen

     requestWindowFeature(Window.FEATURE_NO_TITLE);
       getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);
Advertisements

(Android)Camera Developer Android

Salam kata dan tutur kata yang saya ucapkan, sebelumnya saya sangat berterima kasih kepada orang tua yang selalu mempercayai saya untuk membuka usaha, kebetulan saya melihat di sebuah program TV, tema “USAHA MUDA”, banyak nara sumber yang berbicara di acara tersebut, kalau ingin usaha jangan menghitung dari usia, kalau di hitung – hitung masa kecil dan bagaimana memandang itu semua, cerita dari saya, saya sejak kecil sudah memandang menjadi wirausaha, ketika SD saya sudah menjual sebuah mainan kelereng,wayang,manizet(menurut nama di daerah saya), ketika SMP saya fakum usaha karena masalah puberitas jadi gak memikirkan itu, di masa SMA saya kembali berusaha, usaha pertama membuka print buat teman temanm print itu berupa tugas dari guru dan usaha kedua menjual sebuah akun Game Online, dan dimana kuliah itu lah puncak saya membuka usaha, dari jualan pakaian,hingga menjual jasa aplikasi mobile dan desktop, itu semua ada pasang surutnya, seperti saya ini usaha jual pakaian saya break sejenak karena urusan kerjaan yang lebih utama karena tidak dapat meluangkan waktu, dan saya berfikir bahwa memanagament waktu dan uang sangat lah di utamakan, dengan beberapa cerita itu semua saya mengajak teman teman semua untuk marilah kita berwirausaha, karena itu akan menjadi kita semua seorang yang mandiri.

Dari beberapa cerita di atas itulah cerita saya di masa kecil hingga saat ini. Baiklah tema kali ini kita akan membahas sebuah device yang dapat membaca gambar atau gerak gerik yang kita lakukan, awal mulanya sebuah camera itu ketikan seseorang ingin mengabadikan sebuah moment, disanalah terbentuklah ide yang cemerlang untuk membuat sebuah alat perekam berupa kamera. kali ini kita akan membuat aktifitas kamera itu di smartphone android kita.

Create project dengan nama CameraDemo

Buka file main.xml untuk membuat tampilan

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:id="@+id/layout">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="Camera Demo"
		android:textSize="24sp" />

	<FrameLayout android:id="@+id/preview"
		android:layout_weight="1" android:layout_width="fill_parent"
		android:layout_height="fill_parent">
	</FrameLayout>

	<Button android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:id="@+id/buttonClick"
		android:text="Click" android:layout_gravity="center"></Button>

</LinearLayout>

Buka AndroidManifest.xml untuk membuka permisson camera

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.camera"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CAMERA"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.camera.CameraDemo"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Create class dengan nama Preview

package com.example.camera;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


class Preview extends SurfaceView implements SurfaceHolder.Callback {
	private static final String TAG = "Preview";

    SurfaceHolder mHolder;
    public Camera camera;
    
    Preview(Context context) {
        super(context);
        
        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        camera = Camera.open();
        try {
			camera.setPreviewDisplay(holder);
			
			
			camera.setPreviewCallback(new PreviewCallback() {

				public void onPreviewFrame(byte[] data, Camera arg1) {
					FileOutputStream outStream = null;
					try {
						outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));	
						outStream.write(data);
						outStream.close();
						Log.d(TAG, "onPreviewFrame - wrote bytes: " + data.length);
					} catch (FileNotFoundException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					} finally {
					}
						Preview.this.invalidate();
				}
			});
		} catch (IOException e) {
			e.printStackTrace();
		}
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        camera.stopPreview();
        camera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPreviewSize(w, h);
        camera.setParameters(parameters);
        camera.startPreview();
    }

    @Override
    public void draw(Canvas canvas) {
    		super.draw(canvas);
    		Paint p= new Paint(Color.RED);
    		Log.d(TAG,"draw");
    		canvas.drawText("PREVIEW", canvas.getWidth()/2, canvas.getHeight()/2, p );
    }
} 

Buka Class main.java

 package com.example.camera;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;

public class CameraDemo extends Activity {
	private static final String TAG = "CameraDemo";
	Camera camera;
	Preview preview;
	Button buttonClick;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		preview = new Preview(this);
		((FrameLayout) findViewById(R.id.preview)).addView(preview);

		buttonClick = (Button) findViewById(R.id.buttonClick);
		buttonClick.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
			}
		});

		Log.d(TAG, "onCreate'd");
	}


	ShutterCallback shutterCallback = new ShutterCallback() {
		public void onShutter() {
			Log.d(TAG, "onShutter'd");
		}
	};

	/** Handles data for raw picture */
	PictureCallback rawCallback = new PictureCallback() {
		public void onPictureTaken(byte[] data, Camera camera) {
			Log.d(TAG, "onPictureTaken - raw");
		}
	};

	/** Handles data for jpeg picture */
	PictureCallback jpegCallback = new PictureCallback() {
		public void onPictureTaken(byte[] data, Camera camera) {
			FileOutputStream outStream = null;
			try {
				// write to local sandbox file system
//				outStream = CameraDemo.this.openFileOutput(String.format("%d.jpg", System.currentTimeMillis()), 0);	
				// Or write to sdcard
				outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));	
				outStream.write(data);
				outStream.close();
				Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
			}
			Log.d(TAG, "onPictureTaken - jpeg");
		}
	};

}

Run

(Android)Include XML dalam XML lain

Selamat Siang teman – teman, tadi ane masuk kuliah B.indonesia, ternyata apa yang saya pikirkan selama ini salah, ternyata setiap perubahan atau penambahan kosa kata selalu terjadi, dai bahasa yang di ajarkan pada masa sd atau smp sangat berbeda dengan apa yang di ajarkan di perguruan tinggi, yang saya pahami hanyalah “Bahasa Merupakan Kepribadian seseorang”, dan dosen ane bilang, cari lah pasangan hidup yang selalu menggunakan bahasa yang baik dan benar. kalo di pikir itu relastis benar dan sangat benar.

Dengan beberapa kutipan di atas belajar bahasa dengan baik dan benar. baik kita langsung ke tema utama, kali ini kita akan membahas gimana cara menghubungkan XML dengan XML yang lain, karena seperti di class java kita bisa memanggil class itu di class lain kalau di java kita bisa menggunakan konstruktor agar class itu dapat di panggil, untuk di XML itu namanya include, logikanya sama dengan class java yang digunakan.

 <include 
    android:id="@layout/menu2"
    />

itu saja yang harus di tambah pada file xml, terima kasih.

(Android)Berkenalan Aktifitas Download Manager

Selamat sore teman – teman, lagi ngerjain apa nih, ane dapet kejaran waktu atau kejar waktu, ini tidak ketergantungan dengan pihak ke tiga, jadi tidak ada kontrak aplikasi berlanjut, masalahnya untuk creator nya itu yang akan menjadi masalah, tapi gak papa hitung – hitung cari amal di dunia dan akhirat, tema ini sebenarnya gak ada hubungan nya dengan app yang ane buat.

Bagaimana menggunakan aktifitas download manager dan proses download manager itu berlangsung, karena dalam sebuah system android sudah menyediakan itu semua, dengan kata lain kita hanya mengaktifkan atau menggunakan package tersebut, sama dengan aktifitas lain. di bawah ini merupakan aktifitas yang akan kita gunakan. atau potongan code yang akan kita gunakan.

private DownloadManager dm;

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(
Uri.parse(“https://aeroyid.wordpress.com/&#8221;));
enqueue = dm.enqueue(request);

kelanjutannya kita langsung ke contoh projectnya :

Create Project dengan nama DownloadManager

Buka AndoridManifest.xml kita akan membuka permission internet terlebih dahulu

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.downloadmanagerpart2"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.downloadmanagerpart2.DownloadManagerpart2"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Buka file main.xml kita akan membuat tampilan untuk membuat aktifitas download manager

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:text="Start Download" android:id="@+id/button1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:onClick="onClick"></Button>
    <Button android:text="View Downloads" android:id="@+id/button2"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:onClick="showDownload"></Button>
    <ImageView android:layout_height="wrap_content" android:id="@+id/imageView1"
        android:src="@drawable/ic_launcher" android:layout_width="wrap_content"></ImageView>
</LinearLayout>

Buka file main.java

 package com.example.downloadmanagerpart2;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.app.DownloadManager.Request;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

@SuppressLint("NewApi")
public class DownloadManagerpart2 extends Activity {
	  private long enqueue;
	    private DownloadManager dm;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_download_managerpart2);
		 BroadcastReceiver receiver = new BroadcastReceiver() {
	            @Override
	            public void onReceive(Context context, Intent intent) {
	                String action = intent.getAction();
	                if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
	                    long downloadId = intent.getLongExtra(
	                            DownloadManager.EXTRA_DOWNLOAD_ID, 0);
	                    Query query = new Query();
	                    query.setFilterById(enqueue);
	                    Cursor c = dm.query(query);
	                    if (c.moveToFirst()) {
	                        int columnIndex = c
	                                .getColumnIndex(DownloadManager.COLUMN_STATUS);
	                        if (DownloadManager.STATUS_SUCCESSFUL == c
	                                .getInt(columnIndex)) {
	 
	                            ImageView view = (ImageView) findViewById(R.id.imageView1);
	                            String uriString = c
	                                    .getString(c
	                                            .getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
	                            view.setImageURI(Uri.parse(uriString));
	                        }
	                    }
	                }
	            }
	        };
	 
	        registerReceiver(receiver, new IntentFilter(
	                DownloadManager.ACTION_DOWNLOAD_COMPLETE));
	    }
	 
	    public void onClick(View view) {
	        dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
	        Request request = new Request(
	                Uri.parse("https://aeroyid.wordpress.com/"));
	        enqueue = dm.enqueue(request);
	 
	    }
	 
	    public void showDownload(View view) {
	        Intent i = new Intent();
	        i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
	        startActivity(i);
	    }
	}

Run dan hasilnya seperti di bawah ini

Capture

2

(Android)Membuat Gerakan halus pada Getsures Detector

Selamat pagi teman – teman, apa suguhan tm(teman – teman), apakah roti,susu,kopi,mie, atau pun sarapan besar. kalo ane pagi ini menyuguhkan kopi dengan rasa jambi, teman – teman belum tahukan rasa nikmatnya kopi dengan rasa coklat asli, bener – bener nikmat. Sebuah artikel yang ane baca, bahwa kopi sangat memberikan struktur postif pada saat pagi hari. tapi ane bukan bagian kesehatan atau gizi, jadi ane tidak bisa membuktikan apa yang ada di dalam kandungan kopi tersebut.

Baiklah, pagi ini kita akan membahas bagaimana membuat sistem pada android yang ada di dalam teknologi android tersebut, pada dasarnya smartphone yang sudah di tanam beberapa sensorik yang tidak biasa pada sebuah Handphone, kita akan membahas Getsure Sensorik, Getsure sensorik merupakan sebuah sensorik yang di gunakan untuk memadukan aplikasi dengan sistem touch.

This constructor was deprecated in API level 3.
Use GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler) instead.

Creates a GestureDetector with the supplied listener. This variant of the constructor should be used from a non-UI thread (as it allows specifying the Handler).

Parameters
listener the listener invoked for all the callbacks, this must not be null.
handler the handler to use
Throws
NullPointerException if either listener or handler is null.
(Developer Android.com)

Dengan kata lain, bahwa pada Sensorik yang ada pada system android, tidak semua mendukung sensorik getsure, getsure sensor ini digunakan pada platform 2.2 sampai 4.2, oh ya saya sebelumnya belum menceritakan kenapa saya menggunakan sensor ini, sensor ini saya padukan dengan finger detector, yang digunakan untuk membaca titik – titik tertentu pada jari kita, aplikasi saya buat untuk tugak KP kuliah ane, jadi semoga dengan cepat ane selesaikan, semoga teman – teman menerima aplikasi ini dengan lapang dada.

Create Project dengan nama Getsure Detector

Buka main.xml untuk membuat desain tampilan yang akan digunakan

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Swipe Demo"
        android:gravity="center"
        android:layout_margin="10dip" />
	<LinearLayout
	    android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:orientation="vertical" 
    	android:gravity="center">
	    <ImageView 
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:layout_gravity="center"
	        android:gravity="center"
	        android:layout_margin="10dip"
	        android:id="@+id/image_place_holder"/>
	</LinearLayout>
</LinearLayout>

Buka file main.java

 package com.example.gesturesdetector;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import java.util.ArrayList;

import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class GesutresDetector extends Activity implements OnGesturePerformedListener {
	  private GestureLibrary gestureLib;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		GestureOverlayView gestureOverlayView = new GestureOverlayView(this);
	    View inflate = getLayoutInflater().inflate(R.layout.activity_gesutres_detector, null);
	    gestureOverlayView.addView(inflate);
	    gestureOverlayView.addOnGesturePerformedListener(this);
	  
	    if (!gestureLib.load()) {
	      finish();
	    }
	    setContentView(gestureOverlayView);
	  }

	  @Override
	  public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
	    ArrayList predictions = gestureLib.recognize(gesture);
	    for (Prediction prediction : predictions) {
	      if (prediction.score > 1.0) {
	        Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT)
	            .show();
	      }
	    }
	  }
	} 

(Android)Membuat Koneksi Aplikasi Kita ke Twiiter Developer

as

Selamat Siang Teman – teman, tumben ya aye posting pada siang hari, aye lagi cukup lumayan tugas yang aye kerjakan dan harus selesai tepat waktu, tapi aye tidak akan lupa untuk memposting sebuah artikel di blog aye, tapi jangan terlalu memikirkan semua yang selalu kita kerjakan, karena kita harus memiliki luang waktu untuk menambah volume latihan kita, wah aye udah bosen ngomong yang itu itu aja, haa… ya udah kita langsung ke lembar kerja aja.

Pergi ke alamat twiiter developer di sini https://dev.twitter.com/apps/new

Masuk sebagai akum twiiter biasanya dan akan muncul tampilan seperti di bawah ini

3-15-2013 9-35-47 PM

Masuk ke tab Setting, disini kita akan membuka hak akses

3-15-2013 9-39-46 PM

Masuk ke tab Detail disana info – info Developer

Download library twitter4j di sinihttp://twitter4j.org/en/index.html
3-15-2013 9-41-09 PM

Create Project dengan nama Twitter Connection

Copy twitter4j-core-3.0.3.jar ke libs pada project

3-15-2013 10-04-13 PM
3-15-2013 10-05-15 PM

Buka file AndroidManifest.xml untuk membuka beberapa hak akses

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.twitterconnection"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.twitterconnection.TwiiterConnection"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="oauth" android:host="t4jsample"/>
       
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Buka file main.xml untuk membuat tampilan

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <!-- Twitter Login Button -->
    <Button android:id="@+id/btnLoginTwitter"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Login with Twitter"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginTop="30dip"/>
    
    <!-- user name label -->
    <TextView android:id="@+id/lblUserName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        android:layout_marginTop="30dip"/>

    <!-- label update status -->
    <TextView android:id="@+id/lblUpdate" 
        android:text="Update Status"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:visibility="gone"/>
    
    <!-- Tweet EditText -->
    <EditText android:id="@+id/txtUpdateStatus"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dip"
        android:visibility="gone"/>
    
    <!-- Tweet Button -->
    <Button android:id="@+id/btnUpdateStatus"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Tweet"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:visibility="gone"/>
    
    <!-- Twitter Logout button -->
    <Button android:id="@+id/btnLogoutTwitter"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Logout from Twitter"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginTop="50dip"
        android:visibility="gone"/>

</LinearLayout>

Create class dengan nama AlergDialogManager.java

 package com.example.twitterconnection;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;

public class AlergDialogManager {
	/**
	 * Function to display simple Alert Dialog
	 * @param context - application context
	 * @param title - alert dialog title
	 * @param message - alert message
	 * @param status - success/failure (used to set icon)
	 * 				 - pass null if you don't want icon
	 * */
	public void showAlertDialog(Context context, String title, String message,
			Boolean status) {
		AlertDialog alertDialog = new AlertDialog.Builder(context).create();

		// Setting Dialog Title
		alertDialog.setTitle(title);

		// Setting Dialog Message
		alertDialog.setMessage(message);

		if(status != null)
			// Setting alert dialog icon
			alertDialog.setIcon((status) ? R.drawable.success: R.drawable.fail);

		// Setting OK Button
		alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
			}
		});

		// Showing Alert Message
		alertDialog.show();
	}
}

Create class dengan nama ConnectionDetector

 package com.example.twitterconnection;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class ConnectionDetector {
	private Context _context;

    public ConnectionDetector(Context context){
        this._context = context;
    }

    /**
     * Checking for all possible internet providers
     * **/
    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
}


Buka file main.java

 package com.example.twitterconnection;



import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class TwiiterConnection extends Activity {
	// Constants
		/**
		 * Register your here app https://dev.twitter.com/apps/new and get your
		 * consumer key and secret
		 * */
		static String TWITTER_CONSUMER_KEY = "9BmMhQIAsTt1q5R2aSMZA";
		static String TWITTER_CONSUMER_SECRET = "bMBFql5EbNtzz273Nd04ZB8Rdh4buMS6cJVATtiI8";

		// Preference Constants
		static String PREFERENCE_NAME = "twitter_oauth";
		static final String PREF_KEY_OAUTH_TOKEN = "oauth_token";
		static final String PREF_KEY_OAUTH_SECRET = "oauth_token_secret";
		static final String PREF_KEY_TWITTER_LOGIN = "isTwitterLogedIn";

		static final String TWITTER_CALLBACK_URL = "oauth://t4jsample";

		// Twitter oauth urls
		static final String URL_TWITTER_AUTH = "auth_url";
		static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier";
		static final String URL_TWITTER_OAUTH_TOKEN = "oauth_token";

		// Login button
		Button btnLoginTwitter;
		// Update status button
		Button btnUpdateStatus;
		// Logout button
		Button btnLogoutTwitter;
		// EditText for update
		EditText txtUpdate;
		// lbl update
		TextView lblUpdate;
		TextView lblUserName;

		// Progress dialog
		ProgressDialog pDialog;

		// Twitter
		private static Twitter twitter;
		private static RequestToken requestToken;

		// Shared Preferences
		private static SharedPreferences mSharedPreferences;

		// Internet Connection detector
		private ConnectionDetector cd;

		// Alert Dialog Manager
		AlergDialogManager alert = new AlergDialogManager();
		
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_twiiter_connection);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
		
		cd = new ConnectionDetector(getApplicationContext());

		// Check if Internet present
		if (!cd.isConnectingToInternet()) {
			// Internet Connection is not present
			alert.showAlertDialog(TwiiterConnection.this, "Internet Connection Error",
					"Please connect to working Internet connection", false);
			// stop executing code by return
			return;
		}
		
		// Check if twitter keys are set
		if(TWITTER_CONSUMER_KEY.trim().length() == 0 || TWITTER_CONSUMER_SECRET.trim().length() == 0){
			// Internet Connection is not present
			alert.showAlertDialog(TwiiterConnection.this, "Twitter oAuth tokens", "Please set your twitter oauth tokens first!", false);
			// stop executing code by return
			return;
		}

		// All UI elements
		btnLoginTwitter = (Button) findViewById(R.id.btnLoginTwitter);
		btnUpdateStatus = (Button) findViewById(R.id.btnUpdateStatus);
		btnLogoutTwitter = (Button) findViewById(R.id.btnLogoutTwitter);
		txtUpdate = (EditText) findViewById(R.id.txtUpdateStatus);
		lblUpdate = (TextView) findViewById(R.id.lblUpdate);
		lblUserName = (TextView) findViewById(R.id.lblUserName);

		// Shared Preferences
		mSharedPreferences = getApplicationContext().getSharedPreferences(
				"MyPref", 0);

		/**
		 * Twitter login button click event will call loginToTwitter() function
		 * */
		btnLoginTwitter.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// Call login twitter function
				loginToTwitter();
			}
		});

		/**
		 * Button click event to Update Status, will call updateTwitterStatus()
		 * function
		 * */
		btnUpdateStatus.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// Call update status function
				// Get the status from EditText
				String status = txtUpdate.getText().toString();

				// Check for blank text
				if (status.trim().length() > 0) {
					// update status
					new updateTwitterStatus().execute(status);
				} else {
					// EditText is empty
					Toast.makeText(getApplicationContext(),
							"Please enter status message", Toast.LENGTH_SHORT)
							.show();
				}
			}
		});

		/**
		 * Button click event for logout from twitter
		 * */
		btnLogoutTwitter.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// Call logout twitter function
				logoutFromTwitter();
			}
		});

		/** This if conditions is tested once is
		 * redirected from twitter page. Parse the uri to get oAuth
		 * Verifier
		 * */
		if (!isTwitterLoggedInAlready()) {
			Uri uri = getIntent().getData();
			if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) {
				// oAuth verifier
				String verifier = uri
						.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER);

				try {
					// Get the access token
					AccessToken accessToken = twitter.getOAuthAccessToken(
							requestToken, verifier);

					// Shared Preferences
					Editor e = mSharedPreferences.edit();

					// After getting access token, access token secret
					// store them in application preferences
					e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken());
					e.putString(PREF_KEY_OAUTH_SECRET,
							accessToken.getTokenSecret());
					// Store login status - true
					e.putBoolean(PREF_KEY_TWITTER_LOGIN, true);
					e.commit(); // save changes

					Log.e("Twitter OAuth Token", "> " + accessToken.getToken());

					// Hide login button
					btnLoginTwitter.setVisibility(View.GONE);

					// Show Update Twitter
					lblUpdate.setVisibility(View.VISIBLE);
					txtUpdate.setVisibility(View.VISIBLE);
					btnUpdateStatus.setVisibility(View.VISIBLE);
					btnLogoutTwitter.setVisibility(View.VISIBLE);
					
					// Getting user details from twitter
					// For now i am getting his name only
					long userID = accessToken.getUserId();
					User user = twitter.showUser(userID);
					String username = user.getName();
					
					// Displaying in xml ui
					lblUserName.setText(Html.fromHtml("Welcome " + username + ""));
				} catch (Exception e) {
					// Check log for login errors
					Log.e("Twitter Login Error", "> " + e.getMessage());
				}
			}
		}

	}

	/**
	 * Function to login twitter
	 * */
	private void loginToTwitter() {
		// Check if already logged in
		if (!isTwitterLoggedInAlready()) {
			ConfigurationBuilder builder = new ConfigurationBuilder();
			builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
			builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
			Configuration configuration = builder.build();
			
			TwitterFactory factory = new TwitterFactory(configuration);
			twitter = factory.getInstance();

			try {
				requestToken = twitter
						.getOAuthRequestToken(TWITTER_CALLBACK_URL);
				this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
						.parse(requestToken.getAuthenticationURL())));
			} catch (TwitterException e) {
				e.printStackTrace();
			}
		} else {
			// user already logged into twitter
			Toast.makeText(getApplicationContext(),
					"Already Logged into twitter", Toast.LENGTH_LONG).show();
		}
	}

	/**
	 * Function to update status
	 * */
	class updateTwitterStatus extends AsyncTask {

		/**
		 * Before starting background thread Show Progress Dialog
		 * */
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			pDialog = new ProgressDialog(TwiiterConnection.this);
			pDialog.setMessage("Updating to twitter...");
			pDialog.setIndeterminate(false);
			pDialog.setCancelable(false);
			pDialog.show();
		}

		/**
		 * getting Places JSON
		 * */
		protected String doInBackground(String... args) {
			Log.d("Tweet Text", "> " + args[0]);
			String status = args[0];
			try {
				ConfigurationBuilder builder = new ConfigurationBuilder();
				builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
				builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
				
				// Access Token 
				String access_token = mSharedPreferences.getString(PREF_KEY_OAUTH_TOKEN, "");
				// Access Token Secret
				String access_token_secret = mSharedPreferences.getString(PREF_KEY_OAUTH_SECRET, "");
				
				AccessToken accessToken = new AccessToken(access_token, access_token_secret);
				Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
				
				// Update status
				twitter4j.Status response = twitter.updateStatus(status);
				
				Log.d("Status", "> " + response.getText());
			} catch (TwitterException e) {
				// Error in updating status
				Log.d("Twitter Update Error", e.getMessage());
			}
			return null;
		}

		/**
		 * After completing background task Dismiss the progress dialog and show
		 * the data in UI Always use runOnUiThread(new Runnable()) to update UI
		 * from background thread, otherwise you will get error
		 * **/
		protected void onPostExecute(String file_url) {
			// dismiss the dialog after getting all products
			pDialog.dismiss();
			// updating UI from Background Thread
			runOnUiThread(new Runnable() {
				@Override
				public void run() {
					Toast.makeText(getApplicationContext(),
							"Status tweeted successfully", Toast.LENGTH_SHORT)
							.show();
					// Clearing EditText field
					txtUpdate.setText("");
				}
			});
		}

	}

	/**
	 * Function to logout from twitter
	 * It will just clear the application shared preferences
	 * */
	private void logoutFromTwitter() {
		// Clear the shared preferences
		Editor e = mSharedPreferences.edit();
		e.remove(PREF_KEY_OAUTH_TOKEN);
		e.remove(PREF_KEY_OAUTH_SECRET);
		e.remove(PREF_KEY_TWITTER_LOGIN);
		e.commit();

		// After this take the appropriate action
		// I am showing the hiding/showing buttons again
		// You might not needed this code
		btnLogoutTwitter.setVisibility(View.GONE);
		btnUpdateStatus.setVisibility(View.GONE);
		txtUpdate.setVisibility(View.GONE);
		lblUpdate.setVisibility(View.GONE);
		lblUserName.setText("");
		lblUserName.setVisibility(View.GONE);

		btnLoginTwitter.setVisibility(View.VISIBLE);
	}

	/**
	 * Check user already logged in your application using twitter Login flag is
	 * fetched from Shared Preferences
	 * */
	private boolean isTwitterLoggedInAlready() {
		// return twitter login status from Shared Preferences
		return mSharedPreferences.getBoolean(PREF_KEY_TWITTER_LOGIN, false);
	}

	protected void onResume() {
		super.onResume();
	}

}

referensi :
https://developers.google.com/appengine/
http://twitter4j.org/en/index.html
http://androidhive.com

(Android)Menghubungkan Aplikasi Anda Dengan Facebook Developer

Selamat Pagi teman – teman..
Dalam kesempatan kali ini kita akan membahas bagaimana membuat aplikasi yang terhubung dengan aplikasi android teman – teman, tapi saya akan sedikit cerita, malam tadi pada tanggal 9 Maret 2013 jam 21.00, saya menonton acara show di Metro TV yaitu JustAlvin tema nya itu “Kreativitas” nah dari beberapa bintang tamu itu saya ada 2 yang saya ingan yaitu Merri Riani dan Mas Wahyu Aditya, kalo mbak Merri merupakan pengusaha di singapura yang aslinya indonesia, dia berkata “Beranilah untuk bermimpi” sedangkan mas Wahyu Aditya merupakan seniman animator indonesia yang sangat berbakat dan beliau berkata “Kreativitas mengubah segalanya”, dengan itu kita dapat menggariis bawahi bahwa mimpi setinggi tingginya harus ada dan dimiliki setiap orang dan kreativitas di dalam setiap manusia harus ada, dengan ada nya kedua tersebut mimpi teman teman akan tercapai, berkat doa dan kerjakeras, nah ada satu lagi kata kata dari mbak merri, sukses itu seperti kita mencapai sesuatu untuk menang no satu. jussss itu lah yang saya renungkan di malam hari, semoga ini dapat membantu teman teman…

kita akan langsung ke teman pertama, menghubungkan aplikasi kita dengan facebook sdk, biasanya untuk mendapatkan infromasi data yang ada pada facebook, karena dengan beberapa aplikasi semuanya seperti itu, kali ini kita akan mencoba bagaimana SDK facebook itu dapat berjalan di aplikasi kita. saya mohon teman teman harus bertahap melakukan ini, karena ini sedikit rumit, ayo kita mulai.

Download Openssl di sini

Eksterak file tersebut di direktori yang muda di ingat

Buka CMD dan lakukan langkah – langkah di bawah ini

  • Masuk Ke direktori C:\Program Files\Java\jdk1.6.0_26\bin pokoknya letak jdk teman teman
  • tuliskan code dibawah ini
  •  keytool -export -alias myAlias -keystore C:\Users\user name teman teman\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
    

    3-10-2013 4-27-05 AM
    kita akan mendapatkan sebuah kode, kode itu akan digunakan pada key hashes

Daftar ke developer facebook untuk medaftarkan data data app kita di sini – pilih aplikasi android native

isikan data tersebut dan akan menghasilkan seperti gambar di bawah ini
3-10-2013 3-46-47 AM

kita akan mendapatkan

App ID: 230209487122729
App Secret: 9034e538ff0e2064d7d8f9dff7e11a36(setel ulang)

ini akan digunakan untuk id app kita…

Download Facebook SDK di sini

Ektrak file yang sudah di download tadi

Import file tersebut

3-10-2013 10-08-45 PM

3-10-2013 10-09-30 PM

Create Project dengan nama ConnectFB

Klik kanan pada project yang di buat – pilih properties – pilih android – add – project Facebook SDK

3-10-2013 10-10-00 PM

Buka file AndroidManifest.xml untuk membuat permission internet

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.connectfb"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />
    <permission-tree />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.connectfb.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Buka file main.xml untuk membuat aktifitas button

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignParentTop="true"
        android:layout_marginTop="60dp"
        android:text="Button" />

</RelativeLayout>

Buka file Main.java untuk memanggil SDK Facebook

 package com.example.connectfb;

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	
	private static String APP_ID = "230209487122729"; // app ID yang terlah kita daftar sebelumnya..
	
	
	private Facebook facebook;
	private AsyncFacebookRunner mAsyncRunner;
	String FILENAME = "android_data";
	private SharedPreferences mPrefs;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		facebook = new Facebook(APP_ID);
		mAsyncRunner = new AsyncFacebookRunner(facebook);
		Button login = (Button)findViewById(R.id.button1);
		login.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
			loginToFacebook();	
			}
		});
	
	}

	public void loginToFacebook(){
		mPrefs = getPreferences(MODE_PRIVATE);
		String access_token = mPrefs.getString("access_token", null);
		long expires = mPrefs.getLong("access_expires",0);
		
		if(access_token !=null){
			facebook.setAccessToken(access_token);
		}
		if(expires !=0){
			facebook.setAccessExpires(expires);
		}
		 if (!facebook.isSessionValid()) {
		        facebook.authorize(this,
		                new String[] { "email", "publish_stream" },
		                new DialogListener() {
		 
		                    @Override
		                    public void onCancel() {
		                        // Function to handle cancel event
		                    }
		 
		                    @Override
		                    public void onComplete(Bundle values) {
		                        // Function to handle complete event
		                        // Edit Preferences and update facebook acess_token
		                        SharedPreferences.Editor editor = mPrefs.edit();
		                        editor.putString("access_token",
		                                facebook.getAccessToken());
		                        editor.putLong("access_expires",
		                                facebook.getAccessExpires());
		                        editor.commit();
		                    }
		 
		                    @Override
		                    public void onError(DialogError error) {
		                        // Function to handle error
		 
		                    }
		 
		                    @Override
		                    public void onFacebookError(FacebookError fberror) {
		                        // Function to handle Facebook errors
		 
		                    }
		 
		                });
		    }
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}

RUn dan hasilnya seperti dibawah ini

3-10-2013 10-17-24 PM

referensi :
https://developers.facebook.com/apps/230209487122729/summary?save=1
http://developers.facebook.com/android/
http://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
http://developers.facebook.com/docs/reference/android/3.0