<< Chapter < Page | Chapter >> Page > |
Use the
Project Explorer
(left pane in Eclipse) to open the different files and familiarize yourself with each component.
Building the project actually consists of first building your Native C code as a library using
ndk-build
, and then building the Java code, which is responsible for loading the C library and executing your functions.
For this lab project, the build process in Eclipse has already been configured to build everything automatically, and so building your project is as simple as clicking
Project>Build Project
.
Build Automatically
, and then build by first
Clean
ing the project and checking the "Immediately start build" option.Open
.\jni\process.c
in the Eclipse editor. This file contains the processing function, which is where you will implement your signal processing. If you see notifications for syntax errors, then in the
Project Explorer
, right-click on the project name and go to
Project Properties>C/C++ General>Paths and Symbols
and add the following three files into the
Include directories
for
GNU C
:
C:\NvPack\android-ndk-r8\platforms\android-9\arch-arm\usr\include
C:\NvPack\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\includeC:\NvPack\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\libs\armeabi-v7a\include
In the
Lab4Activity
Java class, the following function declaration is made:
public static native void process(ShortBuffer inbuf, DoubleBuffer outbuf, int N);
Where is the Lab4Activity class defined?
According to the
"Understanding the Android Project Structure" section in Part 1, you can find it in
Lab4Activity.java
in a sub-directory of
.\src\
Here, the
native
keyword states that
process()
is a Native C function. The first argument points to the Java-equivalent of a
short[N]
array, which holds a block of the 16-bit audio data. The second argument points to the Java-equivalent of a
double[N]
array, which you have to fill with data to visualize on-screen.
In
process.c
, the C-equivalent function declaration for
process()
, along with pointers to the input and output buffers have already been written for you. Appropriate header files have also been included, including the
FFTW library, a popular C library for implementing the FFT.
To introduce the Java debugging environment, you will verify that the mechanism for using
test vectors is working correctly. First, in the
Lab4Activity
class definition, set the variable
FILE_INPUT
to
true
. Set a breakpoint on the line where
process()
is called.
Click
Run>Debug
, and debug as an
Android Application
. The project will automatically rebuild if out-of-date, and should switch to the
Debug Perspective
. The application will automatically run and be halted at the set breakpoint.
Click
Window>Show View>Expressions
and add the following expression:
sb.get(0)
, which returns the
first value in the buffer. Verify that the value is correct by comparing to the values in the lookup table defined in
LOOKUP.java
. Repeat this for other values in the table to convince yourself that the test vector values were copied correctly.
Notification Switch
Would you like to follow the 'Ece 420 fall 2013' conversation and receive update notifications?