Android Anlatımlar

Android Programlama

Bu bölümde Android çatısında programlama yaparken ihtiyacınız olabilecek bazı önemli konular hakkında anlatımlar bulabileceksiniz.

İncele

Android Problemler

Android Problemleri

Bu bölümde Android çatısında programlama yaparken karşılaşabileceğiniz sorunlardan bazılarına cevaplar bulabileceksiniz.

İNCELE

Android Yardımcı Kodlar

Android Programlama Yardımcı Kodlar

Bu bölümde Android çatısında programlama yaparken ihtiyacınız olabilecek küçük kod parçalarını bulabileceksiniz.

İNCELE

Samsung Mobile SDK Pen Package

Bu yazımda Samsung Mobile SDK 'dan detaylı bir şekilde bahsetmiştim. Bu yazımda  Samsung Mobile SDK içerisindeki Pen Package kullanılarak nasıl uygulama geliştirileceği hakkında bilgi vereceğim. Bunu yaparken örnek çok basit bir uygulama geliştirip, bu uygulamada Pen Package'ın başlatılması, SpenSurfaceView, NoteDoc, PageDoc ve Pen Setting View oluşturulması, ve listenerların eklenmesi gibi işlemleri yapacağım.

 

PenPackage isminde bir Android Application Project oluşturuyoruz.

 

activity_main.xml dosyamızı alttaki şekilde oluşturuyoruz.

<LinearLayout 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"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/tool_menu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/penBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="1dip"
            android:background="@drawable/selector_tool_bg"
            android:src="/@drawable/selector_pen" />
    </LinearLayout>

    <FrameLayout
        android:id="@+id/spenViewContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <RelativeLayout
            android:id="@+id/spenViewLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </RelativeLayout>
    </FrameLayout>

</LinearLayout>


libs klasörümüzü oluşturup Samsung Mobile SDK içerisindeki Pen Package .jar dosyalarını içerisine kopyalıyoruz.

Artık Pen Package fonksiyonlarını kullanabiliriz. 

drawable-hdpi.zip dosyasını indirerek ihtiyacımız olacak kaynak dosyalarını temin ediyor ve projemizin aynı isimli drawable-hdpi klasörüne kaynak dosyalarını kopyalıyoruz.

.jar ve kaynak dosyalarımızı sağladıktan sonra artık, MainActivity sınıfımızda gerçekleştirime başlayabiliriz.

package com.gokselguren.penpackage;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.samsung.android.sdk.SsdkUnsupportedException;
import com.samsung.android.sdk.pen.Spen;
import com.samsung.android.sdk.pen.SpenSettingPenInfo;
import com.samsung.android.sdk.pen.document.SpenNoteDoc;
import com.samsung.android.sdk.pen.document.SpenPageDoc;
import com.samsung.android.sdk.pen.engine.SpenColorPickerListener;
import com.samsung.android.sdk.pen.engine.SpenSurfaceView;
import com.samsung.android.sdk.pen.settingui.SpenSettingPenLayout;

public class MainActivity extends Activity {
    private Context mContext;
    private SpenNoteDoc mSpenNoteDoc;
    private SpenPageDoc mSpenPageDoc;
    private SpenSurfaceView mSpenSurfaceView;
    private SpenSettingPenLayout mPenSettingView;

    private ImageView mPenBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mContext = this;
        boolean isSpenFeatureEnabled = false;
        Spen spenPackage = new Spen();
        try {                       
            //init sPen
            spenPackage.initialize(this);
            isSpenFeatureEnabled = spenPackage.isFeatureEnabled(Spen.DEVICE_PEN);
        } catch (SsdkUnsupportedException e) {

        } catch (Exception e1) {
            Toast.makeText(mContext, "Cannot initialize Spen.",
                    Toast.LENGTH_SHORT).show();
            e1.printStackTrace();
            finish();
        }
        //Get view's instances
        FrameLayout spenViewContainer =
                (FrameLayout) findViewById(R.id.spenViewContainer);
        RelativeLayout spenViewLayout =
                (RelativeLayout) findViewById(R.id.spenViewLayout);
        //Get SpenSettingPenLayout instance with using spenViewLayout
        mPenSettingView =
                new SpenSettingPenLayout(mContext, new String(),
                        spenViewLayout);
        if (mPenSettingView == null) {
            Toast.makeText(mContext, "Cannot create new PenSettingView.",
                    Toast.LENGTH_SHORT).show();
            finish();
        }   
            
        //add SettingView to spenViewContainer
        spenViewContainer.addView(mPenSettingView);
        
        //Get SpenSurfaceView instance
        mSpenSurfaceView = new SpenSurfaceView(mContext);
        if (mSpenSurfaceView == null) {
            Toast.makeText(mContext, "Cannot create new SpenView.",
                    Toast.LENGTH_SHORT).show();
            finish();
        }        
        //add mSpenSurfaceView to spenViewLayout
        spenViewLayout.addView(mSpenSurfaceView);        
        //Set mSpenSurfaceView a canvas to mPenSettingView
        mPenSettingView.setCanvasView(mSpenSurfaceView);
       
        Display display = getWindowManager().getDefaultDisplay();
        Rect rect = new Rect();
        display.getRectSize(rect);
        try {           
            //Get SpenNoteDoc instance using screen dimensions
            mSpenNoteDoc =
                    new SpenNoteDoc(mContext, rect.width(), rect.height());
        } catch (IOException e) {
            Toast.makeText(mContext, "Cannot create new NoteDoc",
                    Toast.LENGTH_SHORT).show();
            e.printStackTrace();
            finish();
        } catch (Exception e) {
            e.printStackTrace();
            finish();
        }        
        //Create SpenPageDoc instance by adding page to mSpenNoteDoc
        mSpenPageDoc = mSpenNoteDoc.appendPage();       
        //Set background color of mSpenPageDoc
        mSpenPageDoc.setBackgroundColor(0xFFD6E6F5);
        mSpenPageDoc.clearHistory();        
        //set mSpenPageDoc to a page of mSpenSurfaceView
        mSpenSurfaceView.setPageDoc(mSpenPageDoc, true);
                initPenSettingInfo();        
        //add SpenColorPickerListener instance to mSpenSurfaceView
        mSpenSurfaceView.setColorPickerListener(mColorPickerListener);

        mPenBtn = (ImageView) findViewById(R.id.penBtn);        
        //add clicklistener to mPenBtn ImageView instance
        mPenBtn.setOnClickListener(mPenBtnClickListener);
        //If device doesn't support sPenFeature set tool type action as finger and show warning text about SpenFeature support of device
        if (isSpenFeatureEnabled == false) {
            mSpenSurfaceView.setToolTypeAction(SpenSurfaceView.TOOL_FINGER,
                    SpenSurfaceView.ACTION_STROKE);
            Toast.makeText(mContext,
                    "Device does not support Spen. \n You can draw stroke by finger",
                    Toast.LENGTH_SHORT).show();
        }
    }
    //Init a SpenSettingPenInfo instance and set its values.   
    //Add this instance to mSpenSurfaceView and mPenSettingView
    private void initPenSettingInfo() {
        SpenSettingPenInfo penInfo = new SpenSettingPenInfo();
        penInfo.color = Color.BLUE;
        penInfo.size = 10;
        mSpenSurfaceView.setPenSettingInfo(penInfo);
        mPenSettingView.setInfo(penInfo);
    }
    //When click button set view's visibility settings
    private final OnClickListener mPenBtnClickListener =
            new OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mPenSettingView.isShown()) {
                        mPenSettingView.setVisibility(View.GONE);
                    } else {
                        mPenSettingView
                                .setViewMode(SpenSettingPenLayout.VIEW_MODE_EXTENSION);
                        mPenSettingView.setVisibility(View.VISIBLE);
                    }
                }
            };
   //Handle color changes on color picker view, update penInfo with new color value
    private SpenColorPickerListener mColorPickerListener =
            new SpenColorPickerListener() {
                @Override
                public void onChanged(int color, int x, int y) {
                    if (mPenSettingView != null) {
                        SpenSettingPenInfo penInfo = mPenSettingView.getInfo();
                        penInfo.color = color;
                        mPenSettingView.setInfo(penInfo);
                    }
                }
            };
    //Release the memory allocations
    @Override
    protected void onDestroy() {
        super.onDestroy();

        if (mPenSettingView != null) {
            mPenSettingView.close();
        }
        if (mSpenSurfaceView != null) {
            mSpenSurfaceView.close();
            mSpenSurfaceView = null;
        }

        if (mSpenNoteDoc != null) {
            try {
                mSpenNoteDoc.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            mSpenNoteDoc = null;
        }
    };
}

Samsung Smart App Challenge 2013 for Galaxy Note

This article is sponsored by Samsung

Sosyal Profiller

Chart