Tuesday, December 14, 2010

XYMob launches mobile coupons app - For Blackberry, Android and iPhone

0 comments
XYMob launches mobile coupons app
By Loralee Stevens, Business Journal Staff Reporter 

SAN RAFAEL – A team of former Autodesk employees has launched a product it hopes will be to mobile shopping what Groupon is to discounting.

XYMob [pronounced zeye-mob], whose founders combine location-based services, venture funding and mobile software expertise, released GeoQpons in time for the holiday shopping season.

Location-based mobile applications leverage a device’s GPS capability to show the user local points of interest, parks, stores, restaurants and commercial services in the area.

“GeoQpons provides a more compelling shopping experience compared to many other mobile coupon applications in the market today,” said XYMob CEO Sunit Lohtia. The team has designed its own platform, parts of which are patent pending....Read More

For more information visit www.xymob.com or www.geoqpons.com.

Source: http://www.northbaybusinessjournal.com/

Saturday, May 1, 2010

Code: Blackberry Facebook/Twitter Connect

1 comments
 Code

Few days back I was struggling with Twitter and facebook API for blackberry. I have smash my head with different libraries available for twitter and facebook and finally have got the success by following the Eki Baskoro's Articals. So I just wanted to share the code given by Eki through my blog.

Comments by Eki : "The following is a short HOWTO on using Facebook Connect on Blackberry. I created a simple Facade encapsulating the Facebook REST API as well as added 'rough' MVC approach for screen navigation. I have tested on JDE 4.5 using 8320 simulator. This is still work in progress and all work is GPLed. "

BlackBerry FaceBook Connect:

See code sample provided by Eki Y. Baskoro: Blackberry Facebook SDK
BlackBerry Twitter Connect:
For example :
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.UnsupportedEncodingException;

import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;

import net.rim.device.api.io.Base64OutputStream;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.BasicEditField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.container.MainScreen;

public class TwittRest extends UiApplication{
    public TwittRest() {
        MyScreen myScreen = new MyScreen();
        pushScreen(myScreen);
    }

    public static void main(String args[]) {
        TwittRest myApp = new TwittRest();
        myApp.enterEventDispatcher();
    }
}
class MyScreen extends MainScreen implements FieldChangeListener {
    BasicEditField musername;
    BasicEditField mPassword;
    BasicEditField mStatus;
    private ButtonField mUpdateStatus;

    public MyScreen() {
        add(musername = new BasicEditField("username: ", ""));
        add(mPassword = new BasicEditField("password: ", ""));
        add(mStatus = new BasicEditField("status: ", ""));
        mUpdateStatus = new ButtonField(ButtonField.CONSUME_CLICK);
        mUpdateStatus.setLabel("update status");
        mUpdateStatus.setChangeListener(this);
        add(mUpdateStatus);
    }

    public void fieldChanged(Field field, int context) {
        if (mUpdateStatus == field) {
            String username = musername.getText().trim();
            String password = mPassword.getText().trim();
            String status = mStatus.getText().trim();
            updateStatus(username, password, status);
        }
    }

    void updateStatus(String username, String password, String status) {
        String response = "";
        try {
            String query = "status=" + urlEncode(status);
            String len = String.valueOf(query.length());
            SocketConnection hc = (SocketConnection) Connector
                    .open("socket://twitter.com:80");
            DataOutputStream dout =
                new DataOutputStream(hc.openOutputStream());
            DataInputStream din = new DataInputStream(hc.openInputStream());
            String userPass = username + ":" + password;
            byte[] encoded = Base64OutputStream.encode(userPass.getBytes(), 0,
                    userPass.length(), false, false);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            String request = "POST /statuses/update.json HTTP/1.1\r\n"
                    + "Host: twitter.com:80\r\n"
                    + "User-Agent: curl/7.18.0 (i486-pc-linux-gnu) " +
                            "libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 " +
                            "libidn/1.1\r\n"
                    + "Accept: */*\r\n"
                    + "Content-Type: application/x-www-form-urlencoded\r\n"
                    + "Content-Length: " + len + "\r\nAuthorization: Basic "
                    + new String(encoded) + "\r\n\r\n";
            bos.write(request.getBytes());
            bos.write(query.getBytes());
            dout.write(bos.toByteArray());
            dout.flush();
            dout.close();
            byte[] bs = new byte[din.available()];
            din.readFully(bs);
            bos = new ByteArrayOutputStream();
            bos.write(bs);
            din.close();
            hc.close();
            response = bos.toString();
        } catch (Exception ex) {}
    }

    public static String urlEncode(String s) {
        if (s != null) {
            try {
                s = new String(s.getBytes("UTF-8"), "ISO-8859-1");
            } catch (UnsupportedEncodingException e) {
            }
            StringBuffer tmp = new StringBuffer();
            try {
                for (int i = 0; i < s.length(); i++) {
                    int b = (int) s.charAt(i);
                    if ((b >= 0x30 && b <= 0x39) || (b >= 0x41 && b <= 0x5A)
                            || (b >= 0x61 && b <= 0x7A)) {
                        tmp.append((char) b);
                    } else if (b == 0x20) {
                        tmp.append("+");
                    } else {
                        tmp.append("%");
                        if (b <= 0xf) {
                            tmp.append("0");
                        }
                        tmp.append(Integer.toHexString(b));
                    }
                }
            } catch (Exception e) {
            }
            return tmp.toString();
        }
        return null;
    }
}

Enjoy!