Я внедрил приведенный ниже код. Сервер получает изображение от клиента, а затем Matlab обнаруживает какой-то объект и сохраняет новое изображение face.jpg, затем я пытаюсь отправить некоторые точки обратно клиенту. Код утилит в ////////// части моего клиентского кода:Код ключа сервера Socket Socket Stacks
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Thread.sleep(15000);
Log.d("myTag","Test message11");
try {
points = inFromServer.readLine();
}catch(Exception IO){
Log.d("myTag","Fails to read from server");
}
Log.d("myTag",points);
sock.close();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Весь код клиента Android здесь. Реальная идея? Пожалуйста помоги.
public class MyActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
int TAKE_PHOTO_CODE = 0;
public static int count=0;
public static String message="SENT";
public void button2OnClick(final View k){
//Connecting to server and send the picture
new Thread(new Runnable(){
public void run(){
try {
int i;
FileInputStream fis = new FileInputStream (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
Socket sock = new Socket("192.168.1.91", 6789);
DataOutputStream os = new DataOutputStream(sock.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(sock.getInputStream()));
byte[] buffer = new byte[1024];
int bytesRead;
while ((i = fis.read()) > -1)
os.write(i);
fis.close();
os.close();
//lhyh apotelesmatos apo server
String points;
points="";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Thread.sleep(15000);
Log.d("myTag","Test message11");
try {
points = inFromServer.readLine();
}catch(Exception IO){
Log.d("myTag","Fails to read from server");
}
Log.d("myTag",points);
sock.close();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
filePath2.delete();
//File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder");
//filePath2.delete();
}catch (Exception IO){
message="NOT SENT";
File filePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
filePath.delete();
File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder");
filePath2.delete();
Log.d("myTag",message);
}
}
}).start();
Button button=(Button) k;
((Button) k).setText(message);
}
public void buttonOnClick(View v){
//here,we are making a folder named picFolder to store pics taken by the camera using this application
final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/";
File newdir = new File(dir);
newdir.mkdirs();
Button capture = (Button) findViewById(R.id.button);
capture.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// here,counter will be incremented each time,and the picture taken by camera will be stored as 1.jpg,2.jpg and likewise.
count++;
String file = dir+"1.jpg";
File newfile = new File(file);
try {
newfile.createNewFile();
} catch (IOException e) {}
Uri outputFileUri = Uri.fromFile(newfile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
});
}
@TargetApi(11)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
Log.d("CameraDemo", "Pic saved");
// Afou travhksei thn kainouria eikona provaletai sto imageview
Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
ImageView image = (ImageView) findViewById(R.id.imageView2);
image.setImageBitmap(bmp);
//mage.setRotation(270);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Я посылаю код сервера, а также общественного класса ImageReceiver {
public static void main(String[] args) {
try{
ServerSocket socket = new ServerSocket(6789);
System.out.println("Server On-----Waiting for Image");
while(true)
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Receive Image From CLient //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
Socket clientSocket = socket.accept();
File filePath = new File("C:\\ImagesReceived\\image.jpg");
filePath.delete();
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
FileOutputStream fout = new FileOutputStream("C:\\ImagesReceived\\image.jpg");
try{
int i;
while ((i = dis.read()) > -1) {
fout.write(i);
}
System.out.println("Image received");
}catch(Exception FromClient){
System.out.println("Image wasn't received");
}
fout.flush();
fout.close();
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Open Matlab Connection in order to Make the Face Detection ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
try{
MatlabProxyFactoryOptions options =
new MatlabProxyFactoryOptions.Builder()
.setUsePreviouslyControlledSession(true)
.build();
MatlabProxyFactory factory = new MatlabProxyFactory(options);
MatlabProxy proxy = factory.getProxy();
proxy.eval("addpath('C:\\Users\\Theojim')");
proxy.eval("run('firsttry.m')");
proxy.eval("rmpath('C:\\Users\\Theojim')");
System.out.println("Matlab Done");
// close connection
proxy.disconnect();
}
catch(Exception Matlab){
System.out.println("Matlab Error");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Epistrofh Shmeiwn Proswpou apo text file ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
try{
String sCurrentLine;
BufferedReader br = null;
br = new BufferedReader(new FileReader("C:\\ImagesReceived\\facepoints.txt"));
String points="";
while ((sCurrentLine = br.readLine()) != null) {
points+=sCurrentLine;
}
System.out.println(points);
DataOutputStream outToClient = new DataOutputStream(clientSocket.getOutputStream());
outToClient.writeBytes(points);
System.out.println("points sent to android");
}catch(Exception Points){
System.out.println("Points Failed to be sent to client");
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Epistrofh Eikonas Face Detected ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//try{
// int j;
// FileInputStream file = new FileInputStream("C:\\ImagesReceived\\face.jpg");
//DataOutputStream stream = new DataOutputStream(clientSocket.getOutputStream());
// while ((j = file.read()) > -1) {
// System.out.println("While starts"+j);
// stream.write(j);
//stream.flush();
//System.out.println("While endss");
//}
//System.out.println("While exits");
//file.close();
//stream.close();
dis.close();
//}
//catch(Exception ImageFace){
//System.out.println("Face.jpeg Failed to be sent to client");
//}
clientSocket.close();
}
}catch(Exception IO){
System.out.println("ERROR");
}
}
}
и, наконец, я посылаю последнюю часть файла logat в что именно происходит. Пожалуйста помоги!!!!!
05-26 22:05:59.715 16000-16491/com.example.theojim.myapplication D/myTag﹕ Test message11
05-26 22: 05: 59,716 16000-16491/com.example.theojim.myapplication Д/MyTag: Сбой чтения с сервера
'Сервер предоставляет изображение от клиента' ?? Вы имеете в виду «Сервер получает изображение от клиента»? – greenapps
'catch (Exception ImageFace)'? Какое исключение? Осмотреть imageFace.getMessage(); – greenapps
'FileInputStream file'. Непрочитанный код. файл используется в «Файле файла». Лучше 'FileInputStream fis'. – greenapps