Archive

Archive for May, 2014

Control VLC Player using Android (Wifi Connected)

May 15th, 2014 No comments
    My first application of Android comes here.In my first tutorial on Controlling VLC using JAVA you can see that the VLC provides a Web interface from which it can be controlled and it also accepts certain commands.So that can be used to control the media player in Local Area Network using any programming language.This time its Android

Code:
MainActivity.Java

package com.example.first_app;
import java.net.Authenticator;
import java.net.URL;


import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setDetectEnabled(true);
final TextView tv1 = (TextView) findViewById(R.id.textView1);
tv1.setText("Bikash");
tv1.setTextColor(Color.BLACK);

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

final Button Prev = (Button) findViewById(R.id.button1);
final Button Play = (Button) findViewById(R.id.Button01);
final Button Next = (Button) findViewById(R.id.Button02);
final Button TenS = (Button) findViewById(R.id.button2);
final Button OMin = (Button) findViewById(R.id.button4);
final Button MTS = (Button) findViewById(R.id.button3);
final SeekBar volume = (SeekBar) findViewById(R.id.seekBar1);
//volume.get

TenS.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=seek&val=+20";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
OMin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=seek&val=+60";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
MTS.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=seek&val=-20";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
Prev.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=pl_previous";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
Play.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=pl_pause";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
Next.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=pl_next";
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

});
volume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
int progress = 0;
@Override
public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser)
{
progress = progresValue;
try {
String urlString = "http://192.168.0.10:8080/requests/status.xml?command=volume&val="+5*progress;
Authenticator.setDefault(new authoRize());
URL url = new URL(urlString);
url.getContent();
} catch (Exception e) {
tv1.setText(e.toString());
tv1.setTextColor(Color.BLACK);
}

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tv1.setText(progress + "/" + seekBar.getMax());
}
});

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void setDetectEnabled(boolean enable) {
Intent intent = new Intent(this, CallDetectService.class);
startService(intent);

}

}




CallHelper.Java

package com.example.first_app;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class CallHelper {

/**
* Listener to detect incoming calls.
*/
private class CallStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
try {
HttpClient client = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://192.168.0.10/API/mobileControl.php?NO="+incomingNumber+"&STATE=YES");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String SetServerString=client.execute(httpget,responseHandler);
} catch (Exception e) { }
break;
}
}
}



private Context ctx;
private TelephonyManager tm;
private CallStateListener callStateListener;
public CallHelper(Context ctx) {
this.ctx = ctx;

callStateListener = new CallStateListener();
}

/**
* Start calls detection.
*/
public void start() {
tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

}

/**
* Stop calls detection.
*/
public void stop() {
tm.listen(callStateListener, PhoneStateListener.LISTEN_NONE);
}

}


CallDetectService.Java

package com.example.first_app;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class CallDetectService extends Service {
private CallHelper callHelper;

public CallDetectService() {
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
callHelper = new CallHelper(this);

int res = super.onStartCommand(intent, flags, startId);
callHelper.start();
return res;
}

@Override
public void onDestroy() {
super.onDestroy();

callHelper.stop();
}

@Override
public IBinder onBind(Intent intent) {
// not supporting binding
return null;
}
}

authoRize.Java

package com.example.first_app;

import java.net.Authenticator;

import java.net.PasswordAuthentication;



class authoRize extends Authenticator {

    private String username, password;



    public authoRize() {

      username = "";

      password = "*****";

    }

    protected PasswordAuthentication getPasswordAuthentication() {

      return new PasswordAuthentication(username, password.toCharArray());

    }

  }

NOTE: Download complete code Here

4 Channel relay board using L293D

May 15th, 2014 No comments
         Many time it requires controlling relays to automate different things in projects.But thing is generally Relays are driven by either high voltage and requires high current but most of the embedded systems works at lower voltage and the constrain is they cant provide high current.

          Their comes the requirement of a circuit which can drive relays taking input from the micro-controller board and also provide the required current to drive relays.Transistors can be used as H-Bridge driver but it makes little complexity so relay drivers IC can be used and are also cheaper.Here i have given design of a 4 Channel Relay driver circuit.Two circuits are designed using ULN2803 or L293D.

Using L293D:

 

Using ULN2803 :