tag:blogger.com,1999:blog-10893159401269846882023-12-26T00:53:13.230-08:00Android Bridgehttp://www.androidwebterminal.com/Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.comBlogger131125tag:blogger.com,1999:blog-1089315940126984688.post-25046304081849681942017-10-30T21:47:00.002-07:002017-10-30T21:47:58.808-07:00How to create a new project using apache maven 3.5.2I just installed apache-maven-3.5.2 and oh boy creating a project seems very difficult. Specially if you are new. It seems it's not possible to create a new project according to the quick start tutorials.<br />
<br />
xx> mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -Dgroup<br />
Id=com.mycompany.app -DartifactId=my-app<br />
[INFO] Scanning for projects...<br />
[INFO] ------------------------------------------------------------------------<br />
[INFO] BUILD FAILURE<br />
[INFO] ------------------------------------------------------------------------<br />
[INFO] Total time: 0.086 s<br />
[INFO] Finished at: 2017-10-31T11:44:26+07:00<br />
[INFO] Final Memory: 4M/15M<br />
[INFO] ------------------------------------------------------------------------<br />
[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (xxx). Please verify you invoked Maven from the correct directory. -> [Help 1]<br />
[ERROR]<br />
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.<br />
[ERROR] Re-run Maven using the -X switch to enable full debug logging.<br />
[ERROR]<br />
[ERROR] For more information about the errors and possible solutions, please read the following articles:<br />
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MissingProjectException<br />
<br />
<br />
Instead, try this<br />
<br />
mvn -B archetype:generate -DinteractiveMode=true<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-34754847211982599322017-05-24T22:45:00.001-07:002017-05-24T22:45:41.172-07:00How to check the Android SIM countgetprop ro.multisim.simslotcount<br />
<br />
or<br />
<br />
SystemProperties.getInt("ro.multisim.simslotcount", 1) > 1Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-36515618911911629922017-05-24T02:40:00.000-07:002017-05-24T21:23:48.944-07:00How to detect Dual SIM using Android shell ?<br />
getprop persist.radio.multisim.config returns "dsds" or "dsda" on multi sim Samsung devices<br />
<br />
source: https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/com/android/internal/telephony/TelephonyProperties.java<br />
<br />
<br />
public static Boolean isDualSimModel() {<br />
return (Boolean.valueOf("dsds".equals(SystemProperties.get("persist.radio.multisim.config"))) Boolean.valueOf("dsda".equals(SystemProperties.get("persist.radio.multisim.config"))));<br />
}<br />
<div>
<br /></div>
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-57266959018761741082017-05-23T21:54:00.000-07:002017-05-23T21:54:05.524-07:00How to get all Android system properties ?<br />
<span style="background-color: white; font-family: "Source Code Pro", monospace; font-size: 13.3333px; white-space: pre;">here is the magic command</span><br />
<span style="background-color: white; font-family: "Source Code Pro", monospace; font-size: 13.3333px; white-space: pre;"><br /></span>
<span style="background-color: white; font-family: "Source Code Pro", monospace; font-size: 13.3333px; white-space: pre;">getprop</span>Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-39946606022352462052017-05-23T21:53:00.001-07:002017-05-23T21:53:32.101-07:00How to dump android processes with thread ids and names<br />
Here is the magic command<br />
<br />
<span class="pln" style="background-color: white; box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.3333px; margin: 0px; padding: 0px; white-space: pre;">ps </span><span class="pun" style="background-color: white; box-sizing: border-box; color: #666600; font-family: "Source Code Pro", monospace; font-size: 13.3333px; margin: 0px; padding: 0px; white-space: pre;">-</span><span class="pln" style="background-color: white; box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.3333px; margin: 0px; padding: 0px; white-space: pre;">t </span><span class="pun" style="background-color: white; box-sizing: border-box; color: #666600; font-family: "Source Code Pro", monospace; font-size: 13.3333px; margin: 0px; padding: 0px; white-space: pre;">-</span><span class="pln" style="background-color: white; box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.3333px; margin: 0px; padding: 0px; white-space: pre;">p</span>Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-52691349841231531472017-01-24T06:35:00.001-08:002017-01-24T06:35:42.085-08:00How to install letsencrypt ssl certificate on nginx without Unable to locate package letsencrypt errorToday, I thought of moving some of the websites to ssl. so I looked up for a guide on Google and most of them says<br />
<br />
sudo apt-get install letsencrypt<br />
<br />
<br />
but it ends with<br />
<br />
E: Unable to locate package letsencrypt<br />
<br />
So, I had to go back to the original repo to fix this problem.<br />
<br />
<br />
git clone https://github.com/letsencrypt/letsencrypt<br />
cd letsencrypt<br />
./letsencrypt-auto --help<br />
<br />
this will show the help. If you are trying to configure to run on nginx.<br />
<br />
sudo ./letsencrypt-auto --nginx<br />
<br />
and then select the website number. Make sure you do not have anything running on port 443 now.<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-74896957748735033872016-12-21T02:01:00.000-08:002016-12-21T02:01:20.345-08:00How to setup Android Studio for Java 8<div class="tr_bq">
Today, I wanted to move one of the project I was working on to Android Studio 2.2 to support Java 8. It's kind of amazing there is not enough information about how to convert an existing project to support Android Studio + Java 8.</div>
<br />
1. In your project build.gradle add classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' So it should be like this<br />
<br />
<blockquote>
// Top-level build file where you can add configuration options common to all sub-projects/modules.<br />buildscript {<br /> repositories {<br /> jcenter()<br /> }<br /> dependencies {<br /> classpath 'com.android.tools.build:gradle:2.2.2'<br /> classpath 'me.tatarka:gradle-retrolambda:3.2.3'<br /> classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'<br /> // NOTE: Do not place your application dependencies here; they belong<br /> // in the individual module build.gradle files<br /> }<br />}<br />allprojects {<br /> repositories {<br /> jcenter()<br /> }<br />}<br />task clean(type: Delete) {<br /> delete rootProject.buildDir<br />}</blockquote>
<div>
<br /></div>
<div>
2. In your Module build.gradle add</div>
<div>
<br /></div>
<div>
apply plugin: 'me.tatarka.retrolambda'</div>
<div>
<br /></div>
<div>
<div>
compileOptions {</div>
<div>
sourceCompatibility JavaVersion.VERSION_1_8</div>
<div>
targetCompatibility JavaVersion.VERSION_1_8</div>
<div>
}</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
apply plugin: 'com.android.application'<br />apply plugin: 'com.neenbedankt.android-apt'<br />apply plugin: 'me.tatarka.retrolambda'<br />android {<br /> compileSdkVersion 25<br /> buildToolsVersion "25.0.1"<br /> defaultConfig {<br /> ..<br /> }<br /> buildTypes {<br /> ...<br /> }<br /> <br /> compileOptions {<br /> sourceCompatibility JavaVersion.VERSION_1_8<br /> targetCompatibility JavaVersion.VERSION_1_8<br /> }<br />}<br />dependencies {<br /> ....<br />}</blockquote>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-980705690754316352016-11-02T07:45:00.000-07:002016-11-02T07:45:01.995-07:00How to fix Arduino WeMos D1 (platform esp8266, package esp8266) is unknown errorfix this go to the folder:<br />
<br />
C:\Users\[username]\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\<br />
<br />
delete the older version folder and everything works fine again.Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-1083628193896718332016-10-03T20:55:00.002-07:002016-10-03T20:55:37.216-07:00Deploying CefSharp with ClickOnce and Could not load file or assembly 'CefSharp.Core.dll<blockquote class="tr_bq">
Could not load file or assembly 'CefSharp.Core.dll</blockquote>
<br />
oh boy, it is a pain in the ass.<br />
<br />
It all started when I decided to use CefSharp in my application. Problem was I was deploying my app though MS ClickOnce and deploying CefSharp and it's dependencies is a pain.<br />
<br />
1st lesson<br />
<br />
Do not add CefSharp and Xilium.CefGlue to the project. They both use different versions of 'CefSharp.Core.dll' and when you deploy they replace 'CefSharp.Core.dll' with different version rather than the one you used for developments.<br />
<br />
2. When you install CefSharp, install cef.redist.x64 and cef.redist.x86 via Package Manager<br />
<br />
3. We need to modify the project to<br />
<br />
1. Deploy CefSharp and it's all dependancies<br />
<br />
2. Deploy CefSharp runtime. Which is VC++ 2013 for 51.0.0.0<br />
<br />
To do that:<br />
<br />
Unload the main project. Right click -> Edit. Just before </project> past following code<br />
<br />
<!-- Copy CEF Stuff--><br />
<ItemGroup><br />
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\*" Exclude="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\x86\**\*;$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\locales\**\*.pak"><br />
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link><br />
<Visible>false</Visible><br />
</Content><br />
<Resource Include="Readme.txt" /><br />
</ItemGroup><br />
<ItemGroup><br />
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\en-GB.*;$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\en-US.*"><br />
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link><br />
<Visible>false</Visible><br />
</Content><br />
</ItemGroup><br />
<ItemGroup><br />
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\x86\**\*"><br />
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link><br />
<Visible>false</Visible><br />
</Content><br />
</ItemGroup><br />
<ItemGroup><br />
<Content Include="$(SolutionDir)packages\CefSharp.Common.51.0.0\CefSharp\x86\**\CefSharp.BrowserSubprocess.*"><br />
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link><br />
<Visible>false</Visible><br />
</Content><br />
</ItemGroup><br />
<!-- Copy C++ 13 x84 redistributables --><br />
<ItemGroup><br />
<Content Include="$(ProjectDir)..\External\Microsoft.VC120.CRT\**\*"><br />
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link><br />
<Visible>false</Visible><br />
</Content><br />
</ItemGroup><br />
<br />
Note that this project is using cef.redist.x86.3.2704.1432, If you are using x64 you have to modify the above script.<br />
<br />
You need to copy Microsoft.VC120.CRT from C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.CRT to a local folder and change "$(ProjectDir)..\External\Microsoft.VC120.CRT\**\*"<br />
<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-18248607939756568672016-09-26T20:18:00.000-07:002016-09-26T21:42:41.867-07:00How to get the Android device name (Settings->About->DeviceName) in Samsung ?<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsDcjbHqKCfs-LVhOxpQzaEdVFJLyxkFsrrboVWQzZsFV1PwQE2qhaIdAbPtBcztKkZMWgEP4oN_UZZ37-DhzEwCTINxCLo3a97z1VDr35teYTL1kzxSoDz6ICwiPL53893_A-gHT4FPgT/s1600/GQ8sp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsDcjbHqKCfs-LVhOxpQzaEdVFJLyxkFsrrboVWQzZsFV1PwQE2qhaIdAbPtBcztKkZMWgEP4oN_UZZ37-DhzEwCTINxCLo3a97z1VDr35teYTL1kzxSoDz6ICwiPL53893_A-gHT4FPgT/s320/GQ8sp.png" width="314" /></a></div>
<br />
I wanted to get the device name specified in Settings->About->DeviceName but I did not see any method in Android SDK that you can call to obtain this information. why ? Because this is only specific to Samsung Android devices, rather than a part of Android itself.<br />
<br />
So, how to get the device name ??<br />
<br />
1. i tried<br />
<br />
<blockquote class="tr_bq">
BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();<br />
String deviceName = myDevice.getName();</blockquote>
<br />
This returns Galexy S5, useless<br />
<br />
2. android.os.Build.MODEL;<br />
<br />
returns SM-G900H<br />
<br />
3. Had to go deep. then i remembered android has a system values database. which is located at<br />
<br />
So I pulled it from my Samsung and took a look<br />
<br />
<blockquote class="tr_bq">
/data/data/com.android.providers.settings/databases/settings.db</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9snAQ5b319HK2d9WU1GLLTNbwpYHLtsCecyJs1il8zUU91Vxr3oJJk42q2cMIxZXPlId_gU_VHjZzr2KyK0h1V76Qj3EAtQ7IDiRZbMdBdMtS4yRUOkoPYA_d8MQg3HDtMBayiZR4liLv/s1600/settings.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9snAQ5b319HK2d9WU1GLLTNbwpYHLtsCecyJs1il8zUU91Vxr3oJJk42q2cMIxZXPlId_gU_VHjZzr2KyK0h1V76Qj3EAtQ7IDiRZbMdBdMtS4yRUOkoPYA_d8MQg3HDtMBayiZR4liLv/s320/settings.png" width="320" /></a></div>
<br />
<br />
So, how to get this using shell<br />
<br />
<blockquote class="tr_bq">
shell@k3g:/ $ settings get system device_name<br />
settings get system device_name<br />
Milky Way</blockquote>
<br />
Using java<br />
<br />
<pre style="background-color: white;"><span style="font-family: "courier new";"><span style="font-size: 12px;">String deviceName = Settings.System.getString(getContentResolver(), "device_name");</span></span></pre>
<br />
Github project<br />
https://github.com/kakopappa/getdevcicename/blob/master/README.md<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com1tag:blogger.com,1999:blog-1089315940126984688.post-28604217481976416462016-08-31T22:24:00.001-07:002016-08-31T22:25:00.528-07:00Simple Android Job Scheduler class<blockquote class="tr_bq">
import java.util.concurrent.Executor;<br />
import java.util.concurrent.LinkedBlockingQueue;<br />
import java.util.concurrent.ThreadPoolExecutor;<br />
import java.util.concurrent.TimeUnit;</blockquote>
<br />
<blockquote class="tr_bq">
public class ThreadPool {<br />
private static final String TAG = "ThreadPool";<br />
private static final int CORE_POOL_SIZE = 4;<br />
private static final int MAX_POOL_SIZE = 8;<br />
private static final int KEEP_ALIVE_TIME = 10; // 10 seconds<br />
// Resource type<br />
public static final int MODE_NONE = 0;<br />
public static final int MODE_CPU = 1;<br />
public static final int MODE_NETWORK = 2;<br />
public static final JobContext JOB_CONTEXT_STUB = new JobContextStub();<br />
ResourceCounter mCpuCounter = new ResourceCounter(2);<br />
ResourceCounter mNetworkCounter = new ResourceCounter(2);<br />
// A Job is like a Callable, but it has an addition JobContext parameter.<br />
public interface Job<T> {<br />
public T run(JobContext jc);<br />
}<br />
public interface JobContext {<br />
boolean isCancelled();<br />
void setCancelListener(CancelListener listener);<br />
boolean setMode(int mode);<br />
}<br />
private static class JobContextStub implements JobContext {<br />
@Override<br />
public boolean isCancelled() {<br />
return false;<br />
}<br />
@Override<br />
public void setCancelListener(CancelListener listener) {<br />
}<br />
@Override<br />
public boolean setMode(int mode) {<br />
return true;<br />
}<br />
}<br />
public interface CancelListener {<br />
public void onCancel();<br />
}<br />
private static class ResourceCounter {<br />
public int value;<br />
public ResourceCounter(int v) {<br />
value = v;<br />
}<br />
}<br />
private final Executor mExecutor;<br />
public ThreadPool() {<br />
mExecutor = new ThreadPoolExecutor(<br />
CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME,<br />
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(),<br />
new PriorityThreadFactory("thread-pool",<br />
android.os.Process.THREAD_PRIORITY_BACKGROUND));<br />
}<br />
// Submit a job to the thread pool. The listener will be called when the<br />
// job is finished (or cancelled).<br />
public <T> Future<T> submit(Job<T> job, FutureListener<T> listener) {<br />
Worker<T> w = new Worker<T>(job, listener);<br />
mExecutor.execute(w);<br />
return w;<br />
}<br />
public <T> Future<T> submit(Job<T> job) {<br />
return submit(job, null);<br />
}<br />
private class Worker<T> implements Runnable, Future<T>, JobContext {<br />
private static final String TAG = "Worker";<br />
private Job<T> mJob;<br />
private FutureListener<T> mListener;<br />
private CancelListener mCancelListener;<br />
private ResourceCounter mWaitOnResource;<br />
private volatile boolean mIsCancelled;<br />
private boolean mIsDone;<br />
private T mResult;<br />
private int mMode;<br />
public Worker(Job<T> job, FutureListener<T> listener) {<br />
mJob = job;<br />
mListener = listener;<br />
}<br />
// This is called by a thread in the thread pool.<br />
public void run() {<br />
T result = null;<br />
// A job is in CPU mode by default. setMode returns false<br />
// if the job is cancelled.<br />
if (setMode(MODE_CPU)) {<br />
try {<br />
result = mJob.run(this);<br />
} catch (Throwable ex) {<br />
Log.w(TAG, "Exception in running a job", ex);<br />
}<br />
}<br />
synchronized(this) {<br />
setMode(MODE_NONE);<br />
mResult = result;<br />
mIsDone = true;<br />
notifyAll();<br />
}<br />
if (mListener != null) mListener.onFutureDone(this);<br />
}<br />
// Below are the methods for Future.<br />
public synchronized void cancel() {<br />
if (mIsCancelled) return;<br />
mIsCancelled = true;<br />
if (mWaitOnResource != null) {<br />
synchronized (mWaitOnResource) {<br />
mWaitOnResource.notifyAll();<br />
}<br />
}<br />
if (mCancelListener != null) {<br />
mCancelListener.onCancel();<br />
}<br />
}<br />
public boolean isCancelled() {<br />
return mIsCancelled;<br />
}<br />
public synchronized boolean isDone() {<br />
return mIsDone;<br />
}<br />
public synchronized T get() {<br />
while (!mIsDone) {<br />
try {<br />
wait();<br />
} catch (Exception ex) {<br />
Log.w(TAG, "ingore exception", ex);<br />
// ignore.<br />
}<br />
}<br />
return mResult;<br />
}<br />
public void waitDone() {<br />
get();<br />
}<br />
// Below are the methods for JobContext (only called from the<br />
// thread running the job)<br />
public synchronized void setCancelListener(CancelListener listener) {<br />
mCancelListener = listener;<br />
if (mIsCancelled && mCancelListener != null) {<br />
mCancelListener.onCancel();<br />
}<br />
}<br />
public boolean setMode(int mode) {<br />
// Release old resource<br />
ResourceCounter rc = modeToCounter(mMode);<br />
if (rc != null) releaseResource(rc);<br />
mMode = MODE_NONE;<br />
// Acquire new resource<br />
rc = modeToCounter(mode);<br />
if (rc != null) {<br />
if (!acquireResource(rc)) {<br />
return false;<br />
}<br />
mMode = mode;<br />
}<br />
return true;<br />
}<br />
private ResourceCounter modeToCounter(int mode) {<br />
if (mode == MODE_CPU) {<br />
return mCpuCounter;<br />
} else if (mode == MODE_NETWORK) {<br />
return mNetworkCounter;<br />
} else {<br />
return null;<br />
}<br />
}<br />
private boolean acquireResource(ResourceCounter counter) {<br />
while (true) {<br />
synchronized (this) {<br />
if (mIsCancelled) {<br />
mWaitOnResource = null;<br />
return false;<br />
}<br />
mWaitOnResource = counter;<br />
}<br />
synchronized (counter) {<br />
if (counter.value > 0) {<br />
counter.value--;<br />
break;<br />
} else {<br />
try {<br />
counter.wait();<br />
} catch (InterruptedException ex) {<br />
// ignore.<br />
}<br />
}<br />
}<br />
}<br />
synchronized (this) {<br />
mWaitOnResource = null;<br />
}<br />
return true;<br />
}<br />
private void releaseResource(ResourceCounter counter) {<br />
synchronized (counter) {<br />
counter.value++;<br />
counter.notifyAll();<br />
}<br />
}<br />
}<br />
}</blockquote>
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com1tag:blogger.com,1999:blog-1089315940126984688.post-1136988067438302552016-08-26T00:10:00.002-07:002016-08-26T00:10:49.091-07:00How to run a single instance of the application or bring app to foreground using C#<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> static class Program</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> [STAThread]</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> static void Main()</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> bool createdNew;</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> using (new Mutex(true, "MyApp", out createdNew))</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> if (createdNew) {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> Application.EnableVisualStyles();</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> Application.SetCompatibleTextRenderingDefault(false);</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> var mainClass = new SynGesturesLogic();</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> Application.ApplicationExit += mainClass.tray_exit;</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> Application.Run();</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> else</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> var current = Process.GetCurrentProcess();</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> foreach (var process in Process.GetProcessesByName(current.ProcessName).Where(process => process.Id != current.Id))</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> {</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> NativeMethods.SetForegroundWindow(process.MainWindowHandle);</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> break;</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
<div>
<span style="color: #333333; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><span style="background-color: white; font-size: 14px; line-height: 21px;"> }</span></span></div>
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-19326946861763712042016-08-11T00:52:00.000-07:002016-08-11T00:52:16.885-07:00How to get the activity on top of the stack using android shell (adb shell)<br />
<br />
adb shell dumpsys activity activities | busybox sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-90445074117999425602016-08-04T01:10:00.005-07:002016-08-04T01:11:47.403-07:00How to check whether an audio file is Silk file ?<blockquote class="tr_bq">
private static boolean isSilkV3File(String filePath) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>RandomAccessFile rFile = null;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
try {<br />
rFile = new RandomAccessFile(filePath, "r");<br />
<br />
byte[] bArr = new byte[9];<br />
rFile.seek(1);<br />
rFile.read(bArr, 0, 9);<br />
<br />
String headStr = new String(bArr);<br />
<br />
if (headStr.endsWith("#!SILK_V3")) {<br />
return true;<br />
}<br />
else {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return false;<br />
}<br />
<br />
} catch (Exception e3) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> }<br />
finally {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(rFile != null) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try { rFile.close(); } catch (IOException e) { }<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return false;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}</blockquote>
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-29566345553911658652016-08-02T20:33:00.001-07:002016-08-02T20:33:22.259-07:00How to view table schema in SQLiteNormally you can<br />
<br />
sp_help '<TableName>' will give you the structure of a table in SQL Server but how to do this in SQLite ?<br />
<br />
Use<br />
<br />
PRAGMA table_info(<table_name>)<br />
<br />
eg:<br />
PRAGMA table_info(ImgInfo2)Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-88468224981438770732016-07-12T02:30:00.003-07:002016-07-12T02:30:49.216-07:00How to add current path to .bashrc<br />
Go to the path and then:<br />
<br />
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-8965769322219796742016-03-23T20:32:00.003-07:002016-03-23T20:32:59.149-07:00How to make a rounded bitmap in Android<blockquote class="tr_bq">
public static Bitmap getRoundedBitmap(Bitmap bitmap, int i, int i2) {<br /> if (bitmap == null) {<br /> return null;<br /> }<br /> Bitmap createBitmap = Bitmap.createBitmap(i, i2, bitmap.getConfig());<br /> Canvas canvas = new Canvas(createBitmap);<br /> Paint paint = new Paint();<br /> canvas.drawARGB(0, 0, 0, 0);<br /> paint.setAntiAlias(true);<br /> canvas.drawOval(0.0f, 0.0f, (float) i, (float) i2, paint);<br /> paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));<br /> int width = bitmap.getWidth();<br /> int height = bitmap.getHeight();<br /> float min = Math.min(((float) width) / ((float) i), ((float) height) / ((float) i2));<br /> int i3 = (int) ((((float) i) * min) / 2.0f);<br /> int i4 = (int) ((min * ((float) i2)) / 2.0f);<br /> canvas.drawBitmap(bitmap, new Rect((width / 2) - i3, (height / 2) - i4, (width / 2) + i3, (height / 2) + i4), new RectF(0.0f, 0.0f, (float) i, (float) i2), paint);<br /> return createBitmap;<br /> }</blockquote>
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-28970355750853901142016-02-28T19:57:00.001-08:002016-02-28T19:57:57.755-08:00How to change the auto rotation feature to potrait using adb shell ?<code class="cpp string">content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0</code><br />
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-67164790182358164512016-02-04T00:48:00.003-08:002016-08-02T20:33:51.030-07:00how to turn mobile data on or off using adb shell rootroot@j2lte:/ # svc data<br />
Control mobile data connectivity<br />
<br />
usage: svc data [enable|disable]<br />
Turn mobile data on or off.<br />
<br />
<br />
root@j2lte:/ # svc data enable<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-73070493941421471592016-02-04T00:44:00.002-08:002016-02-04T00:44:58.473-08:00how to switch off or reboot phone using root ?root@j2lte:/ # svc power<br />Control the power manager<br /><br />usage: svc power stayon [true|false|usb|ac|wireless]<br /> Set the 'keep awake while plugged in' setting.<br /> svc power reboot [reason]<br /> Perform a runtime shutdown and reboot device with specified reason.<br /> svc power shutdown<br /> Perform a runtime shutdown and power off the device.<br /><br />root@j2lte:/ # svc power reboot becauseicanAruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-19542700701905737892016-02-01T01:31:00.000-08:002016-02-01T01:31:54.599-08:00Unable to load DLL (Module could not be found HRESULT: 0x8007007E)I am using a .dll file that is written using C++ in my C# application. When I deployed it test PC I started seeing this error in Event Log.<br />
<br />
<br />
So, I used Dependency Walker to check the missing dependencies and I was missing `msvcp110d.dll` and `msvcr110d.dll` in the test PC<br /><br />I copied these two files from my dev PC to test PC's `C:\Windows\SysWOW64` PC and worked!Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-22670665173351857712016-01-09T03:27:00.005-08:002016-01-09T03:27:43.426-08:00Transmission daemon overwrites settings.json to the default in Raspberry Pisudo /etc/init.d/transmission-daemon stop<br />
<br />
cd /var/lib/transmission-daemon/info<br />
sudo nano settings.json<br />
<br />
Change "rpc-authentication-required": false,<br />
<br />
cd /etc/transmission-daemon<br />
sudo nano settings.json<br />
<br />
Change "rpc-authentication-required": false,<br />
<br />
<br />
sudo /etc/init.d/transmission-daemon startAruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-53245626684636722322016-01-06T00:53:00.000-08:002016-01-06T00:53:02.324-08:00Android sh script error "[: not found" or incorrect systax if;One of the scripts i was working suddenly starting showing Android sh script error "[: not found" or incorrect systax if; errors out of blue. I couldn't figure out what just went wrong.<br />
<br />
<br />
Reson is file format and line ending. To fix this in NotePad ++<br />
<br />
Edit -> EOL Conversion -> Unix<br />
Encoding -> Encode in ANSI<br />
<br />
<br />
<br />Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-24135481402311799382016-01-05T21:41:00.002-08:002016-01-05T21:41:23.288-08:00How to write to Android LogCat via adb shell ?<blockquote class="tr_bq">
log -p i -t yourtag "see this in logcat"</blockquote>
<br />
<br />
yourtag = is the tag for LogCatAruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0tag:blogger.com,1999:blog-1089315940126984688.post-75530172158982560482015-11-18T01:39:00.001-08:002015-11-18T01:45:21.425-08:00How to open Google Settings app programmatically?<blockquote class="tr_bq">
<blockquote class="tr_bq">
</blockquote>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><br /></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="175"></a><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> GOOGLE_SETTINGS_COMPONENT </span><span class="pun">=</span><span class="pln"> </span><span class="str">"com.google.android.gms"</span><span class="pun">;</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<a href="https://www.blogger.com/null" name="176"></a><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> GOOGLE_SETTINGS_ACTIVITY </span><span class="pun">=</span><span class="pln"> </span><span class="str">".app.settings.GoogleSettingsActivity"</span><br />
<br />
<br />
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><span class="pln"></span><span class="typ">Intent</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Intent</span><span class="pun">();</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1319"></a><span class="pln"> i</span><span class="pun">.</span><span class="pln">setClassName</span><span class="pun">(</span><span class="pln">GOOGLE_SETTINGS_COMPONENT</span><span class="pun">,</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1320"></a><span class="pln"> GOOGLE_SETTINGS_COMPONENT </span><span class="pun">+</span><span class="pln"> GOOGLE_SETTINGS_ACTIVITY</span><span class="pun">);</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1321"></a><span class="pln"> </span><span class="kwd">try</span><span class="pln"> </span><span class="pun">{</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1322"></a><span class="pln"> startActivity</span><span class="pun">(</span><span class="pln">i</span><span class="pun">);</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1323"></a><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">catch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">android</span><span class="pun">.</span><span class="pln">content</span><span class="pun">.</span><span class="typ">ActivityNotFoundException</span><span class="pln"> ex</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<table class="FileContents"><tbody>
<tr class="u-pre u-monospace FileContents-line"><td class="FileContents-lineContents"><a href="https://www.blogger.com/null" name="1324"></a><span class="pln"> </span><span class="com">// activity not found.</span></td></tr>
<tr class="u-pre u-monospace FileContents-line"></tr>
</tbody></table>
<br /><span class="pun">}</span></blockquote>
Aruna Tennakoonhttp://www.blogger.com/profile/13691654998632008962noreply@blogger.com0