diff --git a/Android.mk b/Android.mk
index 000144e..7c498da 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,4 @@
 ifeq ($(BOARD_HAVE_QCOM_FM),true)
-ifneq (, $(filter aarch64 arm64, $(TARGET_ARCH)))
-    $(info TODOAArch64: $(LOCAL_PATH)/Android.mk: Enable build support for 64 bit)
-else
 ifneq (,$(filter $(QCOM_BOARD_PLATFORMS),$(TARGET_BOARD_PLATFORM)))
 LOCAL_PATH:= $(call my-dir)
 LOCAL_DIR_PATH:= $(call my-dir)
@@ -22,5 +19,4 @@
 LOCAL_PATH := $(LOCAL_DIR_PATH)
 include $(LOCAL_PATH)/FMRecord/Android.mk
 endif # is-vendor-board-platform
-endif # TARGET_ARCH
 endif # BOARD_HAVE_QCOM_FM
diff --git a/fmapp2/src/com/caf/fmradio/FMTransmitterService.java b/fmapp2/src/com/caf/fmradio/FMTransmitterService.java
index e79ee8b..980c968 100644
--- a/fmapp2/src/com/caf/fmradio/FMTransmitterService.java
+++ b/fmapp2/src/com/caf/fmradio/FMTransmitterService.java
@@ -1163,22 +1163,6 @@
         @Override
         public void setEnabled(boolean enabled) {
         }
-
-        @Override
-        public void updateFolderInfoBrowsedPlayer(String stringUri) {
-        }
-
-        @Override
-        public void updateNowPlayingContentChange() {
-        }
-
-        @Override
-        public void playItemResponse(boolean success) {
-        }
-
-        @Override
-        public void updateNowPlayingEntries(long[] playList) {
-        }
    }
 
    class Metadata {
diff --git a/jni/Android.mk b/jni/Android.mk
index 12c1f3a..5bc46d3 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -17,10 +17,6 @@
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
 
-LOCAL_CFLAGS += -include bionic/libc/kernel/common/linux/types.h
-LOCAL_CFLAGS += -include bionic/libc/kernel/common/linux/posix_types.h
-LOCAL_CFLAGS += -include bionic/libc/kernel/common/linux/socket.h
-
 LOCAL_MODULE := libqcomfm_jni
 LOCAL_MODULE_TAGS := optional
 
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index b2b0814..8d2e610 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -445,22 +445,22 @@
 
 /* native interface */
 static jint android_hardware_fmradio_FmReceiverJNI_getBufferNative
- (JNIEnv * env, jobject thiz, jint fd, jbooleanArray buff, jint index)
+ (JNIEnv * env, jobject thiz, jint fd, jbyteArray buff, jint index)
 {
     int err;
     jboolean isCopy;
-    jboolean *bool_buffer;
+    jbyte *byte_buffer;
 
     if ((fd >= 0) && (index >= 0)) {
-        bool_buffer = env->GetBooleanArrayElements(buff, &isCopy);
+        byte_buffer = env->GetByteArrayElements(buff, &isCopy);
         err = FmIoctlsInterface :: get_buffer(fd,
-                                               (char *)bool_buffer,
+                                               (char *)byte_buffer,
                                                STD_BUF_SIZE,
                                                index);
         if (err < 0) {
             err = FM_JNI_FAILURE;
         }
-        env->ReleaseBooleanArrayElements(buff, bool_buffer, 0);
+        env->ReleaseByteArrayElements(buff, byte_buffer, 0);
     } else {
         err = FM_JNI_FAILURE;
     }
