diff --git a/include/ACGL/Utils/Log.hh b/include/ACGL/Utils/Log.hh
index f585ac5ce8c0beac2fe0bd13afe34fff7f2d959b..55d162b7bd4af07c8b69d8b33d253a86ef8b687c 100644
--- a/include/ACGL/Utils/Log.hh
+++ b/include/ACGL/Utils/Log.hh
@@ -41,6 +41,11 @@
 #include <fstream>
 #include <sstream>
 
+#ifdef __ANDROID__
+#include <android/log.h>
+#endif
+
+
 namespace ACGL{
 namespace Utils{
 
@@ -57,7 +62,6 @@ public:
     ~CoutLikeStreamBuffer();
 
     void setPrefix( const std::string &_prefix );
-
 private:
 
     //virtual std::streamsize xsputn(const base_type::char_type* s, std::streamsize n)
@@ -77,6 +81,12 @@ private:
     size_t mBufferMaxSize; // size of the buffer
 
     bool  mNewLineIsAboutToStart;
+    
+#ifdef __ANDROID__
+    android_LogPriority mAndroidPriority;
+public:
+    void setAndroidPriority( android_LogPriority _priority ) { mAndroidPriority = _priority; }
+#endif
 };
 
 /*
@@ -106,6 +116,15 @@ public:
                 mStreamBuffer->setPrefix( streamName.str() );
             }
         }
+#ifdef __ANDROID__
+        switch (DEBUG_LEVEL) {
+            case 0: mStreamBuffer->setAndroidPriority( ANDROID_LOG_DEBUG); break;
+            case 1: mStreamBuffer->setAndroidPriority( ANDROID_LOG_INFO); break;
+            case 2: mStreamBuffer->setAndroidPriority( ANDROID_LOG_WARN); break;
+            case 3: mStreamBuffer->setAndroidPriority( ANDROID_LOG_ERROR); break;
+            default: mStreamBuffer->setAndroidPriority( ANDROID_LOG_UNKNOWN);
+        }
+#endif
 
         unmute();
     }
diff --git a/src/ACGL/Utils/Log.cc b/src/ACGL/Utils/Log.cc
index 31d0bed069baa0ff7a69c0a334b905c3db9dfd46..c292175b4d11717d7cf5fd69650e6cec2869907b 100644
--- a/src/ACGL/Utils/Log.cc
+++ b/src/ACGL/Utils/Log.cc
@@ -8,7 +8,6 @@
 
 #include <cstdio>
 #include <iostream>
-
 using namespace ACGL::Utils;
 
 CoutLikeStreamBuffer::CoutLikeStreamBuffer() : base_type() {
@@ -35,12 +34,18 @@ CoutLikeStreamBuffer::base_type::int_type CoutLikeStreamBuffer::overflow(base_ty
     if ((mBufferSize >= mBufferMaxSize) || ( base_type::traits_type::eq_int_type(ch, base_type::traits_type::eof()))) {
 
         if (mNewLineIsAboutToStart) {
+#ifndef __ANDROID__
             std::cout << mPrefix;
+#endif
             mNewLineIsAboutToStart = false;
         }
         if (mBufferSize > 0) {
             mBuffer[mBufferSize] = (char) 0;
+#ifdef __ANDROID__
+	    __android_log_print( mAndroidPriority, mPrefix.c_str(), "%s", mBuffer );
+#else
             std::cout << mBuffer;
+#endif
             mBufferSize = 0;
         }
     } else {