Tag: android

改进Android应用程序从Node.js服务器获取JSON

我解决了这个问题。 我在服务器上发送纯文本。 将该行更改为: response.writeHead(200, {'Content-Type': 'application/json'}); 快速的问题。 我的朋友build议寻找改造,而不是我的REST android应用程序使用我的ASync任务。 自从我对这个系统不熟悉的时候,我遇到了一个小问题。 服务器运行使用Node.js通过.stringify()发送JSON对象,所以当我检索一个对象时,它是一个string,而不是一个JSON,我不能将其转换为适当对象的List。 我猜这个错误是由于一个强制exception,因为它发送一个string,因为我得到的exception: com.google.gson.JsonSyntaxException 任何帮助将是伟大的。 这是我认为合适的代码。 Android客户端代码示例如下: private void requestData() { RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ENDPOINT).build(); UnitAPI unit_api = adapter.create(UnitAPI.class); unit_api.getUnits(new Callback<List<Unit>>() { @Override public void success(List<Unit> t, Response response) { units = t; updateDisplay(); } @Override public void failure(RetrofitError error) { Log.d("Failure UnitGet()", error.getMessage()); } […]

电话weinre没有发现任何目标

我尝试启用weinre进行debugging,但是问题在于weinre找不到目标。 这是我做的: 通过nodejs命令安装weinre:npm install weinre -g 通过USB线连接我的android设备(Huawaei智能手机),并在android手机上启用debugging模式。 开始weinre,命令:weinre –boundHost 192.168.2.1 index.html如下所示: <!doctype html> <html> <head> <title>tittle</title> <!– Weinre testing for remote debug with physical device –> <script src="http://192.168.2.1:8080/target/target-script-min.js#anonymous"></script> <script>window.location='./main.html';</script> <body> </body> </html> 在我添加的config.xml <access origin="http://192.168.2.1:8080/*" /> 最后在main.html(这是真正的起始页面)我补充说: <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 然后我压缩应用程序所需的所有文件,并将其上传到phonegap构build。 在phonegapbuild立所有应用程序后,我用移动设备扫描bardcode。 现在设备开始下载应用程序。 我在设备上启动应用程序。 并访问该网站 http://192.168.2.1:8080/client/#anonymous =>应用程序开始,但是网站weinre-server显示“Target:NONE” 我错过了什么? 我在Firefox和Chrome上尝试了这个过程。 我很确定移动设备不使用与我的台式机相同的“本地主机”。 weinre服务器属性是:

我怎样才能超时与shelljs节点的错误?

我正在使用节点webkit的shellJs在Android平板电脑上工作。 我想要做的是使用shelljs Fastboot读取引导程序variables(产品)。 但在Fastboot中,如果没有连接设备,则返回值为“等待设备”,连接保持打开状态。 我想要做的就是让这个命令运行最多5秒,然后如果输出!='Soho'抛出一个错误和取消function。 这是我现在的代码 $('#fbbtn').click(function(){ var getVar = terminal.exec('fastboot -i 0x1949 getvar product'); var getSerial = terminal.exec('fastboot -i 0x1949 devices'); var test getVar.output.match(/Soho/g); if(test=='Soho'){ fbSerial=getSerial.output.substr(0,16); } else alert('ERROR'); }); 我知道shelljs中的exec提供了{async:true},但是不太了解promise,也找不到很好的关于它们的文档。 希望有人能在这里教育我一点

koush AndroidAsync Socket.IO:看起来ConnectCallback()在Google Glass上没有被触发

我试图让我的谷歌眼镜和我的android手机连接到我在我的电脑上运行的一个NodeJs服务器,以便我可以从我的android手机发送消息到我的谷歌眼镜。 为此,我正在使用AndroidAsync的AndroidAsync库,这在我的android手机上效果很好,而且用这个库连接手机和NodeJS服务器是完全没有问题的。 然而,相同的代码似乎不能在我的谷歌眼镜工作。 我的Google Glass DOES连接,因为我的NodeJS服务器的连接EventHandler被触发,它似乎不会触发我的Google Glass上的任何ConnectCallbackfunction。 以下是我在Google Glass应用中使用的代码: SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(), "http://192.168.1.229:5000", new ConnectCallback() { @Override public void onConnectCompleted(Exception ex, SocketIOClient client) { Log.i("SOCKET", "CONNECTION COMPLETED"); if (ex != null) { ex.printStackTrace(); return; } client.setStringCallback(new StringCallback() { @Override public void onString(String string, Acknowledge acknowledge) { Log.d("SOCKET", string); } }); client.setJSONCallback(new JSONCallback() { @Override public void onJSON(JSONObject […]

Heroku + mongolab沙箱应用程序部署在Play商店

我最近开始在android应用程序上工作。 我已经使用nodejs作为REST API的服务器。 我现在已经完成开发我的android应用程序。 我想把它放到Play商店。 我可以继续免费的Heroku帐户,我有哪个主机我的nodejs和mongolab沙箱持有我的数据库? 我的应用程序将被允许,如果我有这些服务我的应用程序在Play商店? 我试过Googlesearch,但还没有find一个conviencing的答案。 急切地等待你的答案! 请帮助我通过! 谢谢!

Android的tcp套接字设置etimedout值

我有Android上的TCP套接字客户端。 另外,我有tcp套接字服务器nodejs,它发送到连接客户端testing消息每2秒。 当我启动应用程序时,它从服务器接收testing消息。 但是,当我closuresWi-Fi连接,我的客户端套接字closures并抛出SocketException(etimedout),如果我打开Wi-Fi我无法接收服务器消息。 但服务器消息已经在服务器中排队,并等待发送给客户端。 据我所知,如果tcp客户端丢失连接,它应该尝试修复连接并接收服务器消息。 但在我的情况下,客户端无法接收消息,因为套接字closures。 在我的电脑上使用Windows和Linux套接字客户端,我正在做同样的事情,但是当我closuresWi-Fi时,客户端套接字没有closures,当我切换Wi-Fi时,我收到消息, -fi禁用。 问题:为什么在android中,套接字很快closures? 我可以设置套接字客户端closures的任何超时? 我试过了 : setKeepAlive(true); setSoTimeout(10000); 试过使用SocketFactory.getDefault().createSocket(); 没有效果。

如何从socket.io 1.2迁移到socket.io 0.9.16?

我有这个代码写在Socket.io 1.2中 var app=require('express')(); var http=require('http').Server(app); var io=require('socket.io')(http); var room; var messageEmitted;; app.get('/', function(req, res){ res.sendFile(__dirname +'/index.html'); }); app.get('/lol', function(req, res){ res.sendFile(__dirname +'/lol.html'); }); io.use(function(socket,next){ var handShakeData=socket.request; room=handShakeData._query['roomName']; messageEmitted=handShakeData._query['messageText']; next(); }); io.on('connection',function(socket){ console.log('A user connnected on : '+room); socket.join(room); io.to(room).emit('emittedMessages',messageEmitted); console.log(messageEmitted); /*socket.on('emittedMessages',function(msg){ //socket.emit(msg); // Send message to sender socket.broadcast.emit(msg); // Send message to everyone BUT […]

如何使用SocketIO连接Android客户端与Node.js服务器?

我试图从Android客户端使用SocketIO与Node.js连接,但我正面临Logcat中的SocketTimeOutException。 mycode的: MainActivity.java package com.example.androidtestclient; import io.socket.IOAcknowledge; import io.socket.IOCallback; import io.socket.SocketIO; import io.socket.SocketIOException; import java.net.MalformedURLException; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { SocketIO socket = new SocketIO("http://10.42.0.32:3000/"); socket.connect(new IOCallback() { @Override public void onMessage(JSONObject json, IOAcknowledge […]

Android上的Cordova Push Plugin在应用程序closures或未运行时不起作用

我一直在尝试使用这个插件在我的应用程序推送通知。 https://github.com/phonegap-build/PushPlugin/ 并通过Node-GCM发送推送。 当应用程序处于前景和背景时,一切正常工作(背景=当用户点击主页button时)。 唯一的问题是,应用程序closures或未运行时Notification不显示。 如果用户通过强制closures应用程序从设置>应用程序停止,或者将应用程序移开以终止应用程序任务。 我一直在找这个解决scheme。 但还是不能解决这个问题。 有没有人有这方面的经验,可以解决它? 我没有更改插件的任何代码,并遵循插件的Github中的示例客户端代码。 请帮我解决这个问题。 非常感谢你。

在Android中通过node.js将图像从一个设备发送到另一个设备

我想从一个设备发送图像到另一个,所以我通过node.js创build了这个东西。 我已经将图像转换为base64,然后转换为string,然后将其发送到node.js服务器,并将该string解码到另一个设备,everythig完美。 我用过socket.io。 现在问题出现了,因为我收到了来自node.js的json响应的string,完整的响应没有得到响应的一半被修剪的地方。 所以基本上我没有得到完整的JSONRESPONSE。 这是我的node.js代码。 onLine[data.to].emit('newPrivateMessage1',{from:name, img:data.img.toString('base64'), type:'Private Msg1'}) 这是我发送图像的第一个设备。 JSONObject json1 = new JSONObject(); String filepath = Environment.getExternalStorageDirectory().toString()+"/1.png"; File file = new File(filepath); String itemname = getIntent().getStringExtra("itemname"); try { @SuppressWarnings("resource") FileInputStream imageInFile = new FileInputStream(file); byte imageData[] = new byte[(int) file.length()]; Log.e("TAG", "IMAGEFATABYTE:::" + imageData); imageInFile.read(imageData); String imageDataString = android.util.Base64.encodeToString(imageData, 0); json1.put("img", imageDataString); […]