Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

Make file Sample Code for Porting libRFID from Linux to Anroid


MY_PATH := $(call my-dir)/librfid-0.2.0

LOCAL_PATH := $(MY_PATH)/src/ \
  $(MY_PATH)/src/ccid

include $(CLEAR_VARS)

# path for Header files
LOCAL_C_INCLUDES := $(MY_PATH)/include

#C files added from the src/ path
LOCAL_SRC_FILES := usleep.c rfid.c rfid_scan.c rfid_reader.c rfid_reader_spidev.c rfid_reader_rc632_common.c \
rfid_reader_openpcd.c rfid_reader_cm5121.c rfid_reader_cm5121_openct.c rfid_protocol.c \
rfid_proto_tcl.c rfid_proto_tagit.c rfid_proto_mifare_ul.c rfid_proto_mifare_classic.c rfid_proto_icode.c \
rfid_layer2.c rfid_layer2_iso15693.c rfid_layer2_iso14443b.c rfid_layer2_iso14443a.c rfid_iso14443_common.c \
rfid_asic_rc632.c rfid_access_mifare_classic.c libusb_dyn.c

#C files added from utils
LOCAL_SRC_FILES := utils/common.c utils/librfid-tool.c utils/mifare-tool.c utils/send_script.c

#C files added from the src/ccid path
#here we are not using the file rfid_reader_cm5121_ccid_direct.c because it is used by rfid_reader_cm5121.c as 
#reference
LOCAL_SRC_FILES := ccid-driver.c 

#Module path of the library
LOCAL_MODULE := test_rfid_integration_RfidLib
LOCAL_LDLIBS := -llog


include $(BUILD_SHARED_LIBRARY)

Write to ADB Log terminal from Java and native code

Usually when we deal with High level programming we should maintain the log information something line debugging because we may have bunch of log data when the system is compiling. Therefore in Android native programming most of the time we deal with c and java.

To track the log in Android native project.

  1. run the android virtual machine using eclipse 
  2. open terminal 
  3. go to the specific folder
  4. command adt logcat to view the log information (This will only run while your android virtual machine is running ,if not it will giving a message like bellow)
Dhanushanths-MacBook-Pro:RFIDIntegration dhanus$ adb logcat
- waiting for device -


From Java
First we see how to pass log information form Java,
Pass the log data information from Java to adb log cat is pretty simple


package test.rfid.integration;
import android.util.Log;------------------------(1)
public class RfidLib {
//Write a own lines in Log using terminal 
public static final String TAG = "Test"; ------------(2)
public static int addValueJ(int x,int y){
Log.d(TAG,"*********The log data from the Java Method************");-----(3)
int sum = x+y;
return sum;
}
public native static int addValueN(int x,int y);
static{
System.loadLibrary("test_rfid_integration_RfidLib");
}
}

you have to add that 3 mentioned lines in your code. Also don't forget to add the LOCAL_LDLIBS line in make file 


LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := test_rfid_integration_RfidLib.c
LOCAL_MODULE := test_rfid_integration_RfidLib
LOCAL_LDLIBS := -llog ---------------(make line)
include $(BUILD_SHARED_LIBRARY)


From Native
Here we can call the log from native code,

#include "test_rfid_integration_RfidLib.h"
#include <android/log.h> ----------------(1)

/*
 * Class:     test_rfid_integration_RfidLib
 * Method:    addValueN
 * Signature: (II)I
 */

JNIEXPORT jint JNICALL Java_test_rfid_integration_RfidLib_addValueN
  (JNIEnv *env, jclass cla, jint x, jint y)
{
//pass the log data in to terminal using
__android_log_print(ANDROID_LOG_DEBUG, "test_rfid_integration_Rfidlib.c", "*********Log data from Native code***********"); ----------(2)
jint sum = x * y;
return sum;

}

Add the two lines which are mentioned in bellow as 1 and 2.

Finally to build the file use ,
  • ndk-build clean
  • ndk-build all
great you are in business





RFID Library for projects

If any one deal with RFID related project for android or linux. Here you can get the open source librfid for your development. The file can be downloadable here. To conform that the source file is working perfectly on your machine follow the instruction.

image reference
  1. Extract the file to your specific location.
  2. Change the folder permission (This should be done if now the ./configure will not process) to change the user permission ->go to folder using terminal and type chmod -R 700 *.
  3. after change the permission type sudo ./configure
  4. Then type sudo make and finally sudo make install .
  5. Done. Now you can start with your code implementation if the source was successfully build.
For Android Developers,
You guys can port this to native library. 


Android NDK Environment Setup and Development

About Android NDK...........................................................................................................


Use of Android NDK.........................................................................................................



Android SDK & NDK Environment Setup........................................................................... 


Basic project sample..............................................................................................................


Native level implementation ..................................................................................................


Android Application UI implementation ...............................................................................


Client Setup............................................................................................................................


Pilot run.........................................................................................................................Enjoy


All credits goes to Marakana Inc and Aleksandar Gargenta

android: No Launcher activity found

Error:

[2005-01-06 19:56:38 - my_Android] No Launcher activity found!
[2005-01-06 19:56:38 - my_Android] The launch will only sync the application package on the device!
Usually this is happening by the AndroidManifest.xml. You need to specify the MAIN and LAUNCHER in the the intent filter for the activity you want to start on launch.

<application android:name="MainApplication" android:debuggable="true">
<activity android:name=".MainActivity" android:launchMode="singleInstance"
    android:label="@string/app_name" android:icon="@drawable/icon">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
                    <action android:name="org.onaips.vnc.ACTIVITY_UPDATE" />
    </intent-filter> 
</activity>
</application>
Here the action tag detail should be like as it is .Because through the activity tag we aretelling to android which is the main Activity and Launcher.

Setup Android SDK in 64 bit Ubuntu 12.04 virtual machine


Needed Applications for Build Android Environment in Linux 

Here we are going to build Android Environment in 64-bit linux .Normally the android SDK was not support to 64-bit linux So we have add a library to run SDK on linux . First of all we have to download some application from Android developer site.

Step 1
Install the Java Virtual machine (JDK) with required version it can be 64bit or 32 bit
To check java version :

If you don't install JDK the download is from oracle and install it click

OR

sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin

Step 2
Extract the download android SDK and NDK in any location in side of your home directory and follow the instruction http://developer.android.com/sdk/installing.html#Installing in this link

using tar -xvf android-sdk-(version) to extract

After the installation you have to install the platform for your android virtual environment
Follow the link this will good instruction to install


Note: if you are dealing with native layer also then extract the android NDK file as well And to change the permission of a folder
 chmod -R 777 for android-sdk-linux_x86, platform-tools and adb. to change 

Step 3
Install 32 bit supported library for 64 bit linux machine

sudo apt-get update
sudo apt-get install ia32-libs

Step 4
install the Eclipse from the Eclipse . Note Don't install the eclipse  from ubuntu market because it was customised one.Therefore use the latest version from eclipse .
Here we have to install android ADT tool in eclipse for that we need to add the specific link to new installation path


If you faced any problem with installation like bellow

"Software being installed: Android Native Development Tools 20.0.0.v201206242043-391819(com.android.ide.eclipse.ndk.feature.group 20.0.0.v201206242043-391819)

Missing requirement: Android Native Development Tools 20.0.0.v201206242043-391819(com.android.ide.eclipse.ndk.feature.group 20.0.0.v201206242043-391819) requires 'org.eclipse.cdt.feature.group 0.0.0' but it could not be found".

Then this is happening because it don't have the supported versions file .So for that we have to do some procedures  like bellow


  1. Go to Help/"Install New Software..."
  2. Click on "Available Sofware Sites"
  3. Search "http://download.eclipse.org/releases/indigo and enable it
  4. Search "http://download.eclipse.org/tools/cdt/releases/indigo and enable it
  5. Come back to Help/"Install New Software..."
  6. Check "Contact all update sites during install to find requiered sofware"
  7. Install ADT Plugin
  8. IT MUST WORK!!!
After this process continue with your installation .

Step 5
setup the android SDK path using terminal
First of go in to your admin user profile in terminal then 
 -> sudo gedit ~/.bash_profile and don't use gedit /.bashrc and enter the below path depend on your folder path 
# Android tools
export PATH=${PATH}:~/android-sdk-linux_x86/tools
export PATH=${PATH}:~/android-sdk-linux_x86/platform-tools

export ANDROID_SDK_HOME=~/android-sdk-linux_x86/tools
export PATH=$PATH:$ANDROID_SDK_HOME