View Full Version : اتصال مبایل با کامپیوتر از طریق WIFI
hesam_a110
پنج شنبه 03 بهمن 1392, 21:19 عصر
دورد بر دوستان
کمک و هم فکری در مورد انکه چطوری می تونم از ظریق شبکه مبایل رو به یه کامپیوتر وصل کنم یه چیزی شبیه موس :لبخند::متفکر: (این کارو شرکت Logitech انجام داده برای موس بودنش ) در حقیقت من یکسری اطلاعاته می خوام با شبکه به یه کامپیوتر بفرستم ولی نمی دونم چطوری میشه ممنونتون میشم کمک کنید در این زمینه :چشمک::چشمک::لبخندساده:
سپاس
rubiks.kde
پنج شنبه 03 بهمن 1392, 21:43 عصر
برای ارتباط بین دو دستگاه از طریق شبکه یکی از رایج ترین راها استفاده از برنامه نویسی سوکت است.
hesam_a110
پنج شنبه 03 بهمن 1392, 22:07 عصر
توی این زمینه بین میایل و کامپیوتر انجام دادید ممکنه اطلاعات بیشتری بدید؟
سپاس
rubiks.kde
پنج شنبه 03 بهمن 1392, 23:30 عصر
من خودم برنامه های کلاینت سروری برای آندورید و ویندوز نوشتم.
شما کاری که میکنی اینه ، یه سرور که روی یه پورت خاص داره گوش میده توی ویندوز مینویسی (هر زبانی که بلدید)
یه کلاینت هم مینویسی که اطلاعات رو روی اون پورت میفرسته.
قبلا توی این تاپیک (http://barnamenevis.org/showthread.php?436668-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA-%D8%A8%D9%87-%D8%B3%D8%B1%D9%88%D8%B1-%D8%AF%D8%B1%D9%88%D9%86-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D8%AA%D8%B1) بررسی شده.
hesam_a110
جمعه 04 بهمن 1392, 02:19 صبح
مرسی کاملا به درد بخور :چشمک: مرسی rubiks.kde (http://barnamenevis.org/member.php?231180-rubiks.kde) که معرفی کردید به خطایی هم که بر خوردم اونجا نوشتم :چشمک:
MohammadHadi2031
جمعه 04 بهمن 1392, 06:13 صبح
سلام دوست عزیز من کدی که در این تاپیک(http://barnamenevis.org/newreply.php?do=postreply&t=436668)قرار دادم با کمی تغییر است زیرا فکر می کردم این برنامه دارای مشکل است لذا من کد اصلی که از منبع گرفتم رو قرار می دهم
hesam_a110
پنج شنبه 01 اسفند 1392, 03:41 صبح
درود بر شما
با راهنمایی هایی که کردید تویه برنامه تستی درست کار میکنه میشه متن و از مبایل به کامپیوتر فرستاد
حالا موردی که هست توی main activity چندتا tab اضافه میشه و تویه هر کدام اصلاعات خودشو داره مثلا تب 1 لیست اسامی تب 2 حزتیات تب 3 گالری تصاویر
چیزی که نمی دونم اینکه چطور می تونم از فرگمنت ها چیزایی که نیاز دارمو به کامپیوتر پاس بدم
package com.example.auiproject;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Looper;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.String;
import java.net.InetAddress;
import java.net.Socket;
import com.example.auiproject.TCPClient.OnMessageReceived ;
@SuppressLint("NewApi")
public class MainActivity extends Activity implements TabListener {
private TCPClient mTcpClient;
EditText editText ;
Button send ;
public static TextView txt;
RelativeLayout rl;
ListAllFragment fram1;
FragmentTransaction fragMentTra = null;
DetailResturantFragment fram3;
ListImageFragment fram2;
/////
private String serverMessage;
public static final String SERVERIP = "192.168.1.2";
public static final int SERVERPORT = 4444;
private OnMessageReceived mMessageListener = null;
private boolean mRun = false;
PrintWriter out;
BufferedReader in;
DataOutputStream dataOutputStream = null;
Thread t;
Runnable con=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mRun = true;
try {
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
Log.e("TCP Client", "C: Connecting...");
//MainActivity.txt.setText("C: Connecting..."+serverAddr);
//Socket socket = new Socket("192.168.1.1", SERVERPORT);
Socket socket = new Socket(serverAddr, SERVERPORT);
/// //os = socket.getOutputStream();
if(socket.isBound())
{
Log.i("SOCKET", "Socket: Connected");
//MainActivity.txt.setText("C: Connected...");
}
else
{
Log.e("SOCKET", "Socket: Not Connected");
//MainActivity.txt.setText("C:Not Connected");
}
try
{
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
/* dataOutputStream = new DataOutputStream(socket.getOutputStream()); byte[] bytes = new byte[] {1}; dataOutputStream.write(bytes, 0, bytes.length); */
Log.e("TCP Client", "C: Sent.");
//MainActivity.txt.setText("C:Sent");
Log.e("TCP Client", "C: Done.");
//MainActivity.txt.setText("C: Done");
if(out.checkError()) { Log.e("PrintWriter", "CheckError"); }
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (mRun)
{ serverMessage = in.readLine();
if (serverMessage != null && mMessageListener != null) {
mMessageListener.messageReceived(serverMessage); } serverMessage = null; }
Log.e("RESPONSE FROM SERVER", "S: Received Message: '" + serverMessage + "'"); }
catch (Exception e)
{
Log.e("TCP", "S: Error", e);
//MainActivity.txt.setText(e.toString());
}
finally { socket.close(); }
}
catch (Exception e) {
Log.e("TCP", "C: Error", e);
//MainActivity.txt.setText("C:"+e);
}
}
};
/////
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
rl = (RelativeLayout) findViewById(R.id.mainLayout);
fragMentTra = getFragmentManager().beginTransaction();
ActionBar bar = getActionBar();
bar.addTab(bar.newTab().setText("Listing").setTabListener(this));
bar.addTab(bar.newTab().setText("Image").setTabListener(this));
bar.addTab(bar.newTab().setText("Details").setTabListener(this));
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTO M
| ActionBar.DISPLAY_USE_LOGO);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TA BS);
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayShowTitleEnabled(false);
bar.show();
} catch (Exception e) {
e.getMessage();
}
/**
* Hiding Action Bar
*/
//////////////////////socket
Log.d("start", "execute");
editText = (EditText)findViewById(R.id.editText1);
send = (Button)findViewById(R.id.button1);
txt=(TextView)findViewById(R.id.textView1);
// connect to the server
// Looper.prepare();
///////
t=new Thread(con);
t.start();
////////
// new connectTask().execute("");
//Log.d("excute", "execute");
/* send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String message = editText.getText().toString();
if (out != null && !out.checkError())
{
out.print(message);
out.flush();
}
//sends the message to the server
//if (mTcpClient != null)
// {
// mTcpClient.sendMessage(message); }
editText.setText("");
}
}); */
}
public class connectTask extends AsyncTask<String,String,TCPClient>
{
@Override protected TCPClient doInBackground(String... message)
{
mTcpClient = new TCPClient(new TCPClient.OnMessageReceived()
{
@Override
public void messageReceived(String message)
{
publishProgress(message); } });
mTcpClient.run(); return null; }
@Override protected void onProgressUpdate(String... values)
{ super.onProgressUpdate(values); } }
/////////////////////////taaaaaaaaaaabbbbbbbbbbb////////////////////////
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (tab.getText().equals("Listing")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
fram1 = new ListAllFragment();
fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), fram1);
fragMentTra.commit();
} else if (tab.getText().equals("Image")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
fram2 = new ListImageFragment();
fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), fram2);
fragMentTra.commit();
} else if (tab.getText().equals("Details")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
fram3 = new DetailResturantFragment();
fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction();
fragMentTra.add(rl.getId(), fram3);
fragMentTra.commit();
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
/////////////////////////\taaaaaaaaaaaabbbbbbbbbbbb
@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;
}
}
hesam_a110
جمعه 02 اسفند 1392, 13:16 عصر
درود
ایده هست ؟ :دی
rubiks.kde
جمعه 02 اسفند 1392, 13:24 عصر
ببینید توی این برنامه ها همیشه برنامه رو به صورت لایه ایی طراحی کنید طوری که مثلا یه سرویس برای ارسال اطلاعات داشته باشید بعد هرجا که لازم بود با استفاده از سرویس اطلاعات رو ارسال کنید.
شما الان سوکت رو توی اکتیویتی ساختید و این اصلا درست نیست.از خارج از این اکتیویتی میخوایید چیکار کنید.
توی برنامه های جند لایه اصول برنامه نویسی به صورت لایه ایی رو رعایت کنید تا به مشکل نخورید
hesam_a110
جمعه 02 اسفند 1392, 13:43 عصر
مرسی از راهنماییتون rubiks.kde در مورد اندروید تازه کارم :چشمک: و نسبت بهش آگاهی زیادی ندارم
در این مورد که راهنمایی کردید نمونه کدی دارید
سپاس
mohsen22
جمعه 02 اسفند 1392, 22:26 عصر
یه سوال:برنامه تحت ویندوز ای پی192.168.56.1 رو دیفالت از کجا میاره ؟ چرا رو شبه ساز درسته اما روی گوشی نه ؟
(انتی ویروس غیر فعال شده)
hesam_a110
شنبه 03 اسفند 1392, 18:19 عصر
درود
mohsen22 این قسمتش درسته تویه اکتیویتی درست آر می کنه IP رو هم می تونید IP ادرس خودتونو بدید موردی نداره اگر به مورد بر خوردید می تونه مربوط به فایروال و آنتی ویروس و تنظیم سوئیچ شبکه باشه اینجا (http://barnamenevis.org/showthread.php?436668-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA-%D8%A8%D9%87-%D8%B3%D8%B1%D9%88%D8%B1-%D8%AF%D8%B1%D9%88%D9%86-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D8%AA%D8%B1)
موردی که هست این وقتی تویه اکتیوتی هست جای دیگه ازش نمیشه استفاده کرد که دوستان سرویس و پیشنهاد دادند که درام روش کار می کنم ببینم چی میشه به نتیجه رسیدم حتما شیر می کنم :چشمک:
alialirezaee1
شنبه 07 تیر 1393, 17:16 عصر
سلام دوستان،
به يه مشكلي برخوردم.
يه برنامه اندرويدي نوشتم كه با socket وصل ميشم به برنامه اي در ويندوز و يه سري كارا انجام مي دم. در emulator android 2.2 و گوشي android 2.3 مثل اسب كار مي كنه.
ولي تو گوشي android 4.0 تست كردم اصلا كار نمي كنه.
try { InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
socket = new Socket(serverAddr, PortNumber);
} catch (IOException e1) {
Log.d(TAG, e1.getMessage());
Toast.makeText(PowerPointRemote.this, e1.getMessage(), Toast.LENGTH_LONG).show();
}
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true );
out.println(getLocalIpAddress());
}
catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
لطفا راهنمايي كنيد
rubiks.kde
شنبه 07 تیر 1393, 17:53 عصر
حتما دارید کار شبکه ایی در ترد اصلی انجام میدید؟
اگه این طوره باید بگم که از آندروید ۴ به بعد استفاده از اتصالات شبکه در ترد اصلی خطا به حساب میاد
alialirezaee1
شنبه 07 تیر 1393, 22:58 عصر
ميشه بيشتر توضيح بديد كه من چه كار بايد بكنم كه در همه ورژنها درست كار كند.
من متدي نوشتم كه براي هر ارسال يك بار socket ايجاد مي شود و ارسال انجام مي شود.
rubiks.kde
شنبه 07 تیر 1393, 23:33 عصر
ميشه بيشتر توضيح بديد كه من چه كار بايد بكنم كه در همه ورژنها درست كار كند.
من متدي نوشتم كه براي هر ارسال يك بار socket ايجاد مي شود و ارسال انجام مي شود.
ببینید شما در اندرویهای جدید امکان کار شبکه ایی ندارید توی ترد اصلی.راه حل ساده هم اینه که بیایی یه ترد بسازی و این کارا رو بکنی.
توی انجمن این موضوع بررسی شده.
در مورد استفاده از ترد بخونید
alialirezaee1
یک شنبه 08 تیر 1393, 11:41 صبح
ببینید شما در اندرویهای جدید امکان کار شبکه ایی ندارید توی ترد اصلی.راه حل ساده هم اینه که بیایی یه ترد بسازی و این کارا رو بکنی.
توی انجمن این موضوع بررسی شده.
در مورد استفاده از ترد بخونید
ممنون. كارم راه افتاد. فقط جهت كنجكاوي دليل اينكه در اندرويد 4 به بعد بايد از ترد استفاده كنيم چيست؟ مگه در داخل ترد اصلي باشه چي ميشه؟
tb.hamed
پنج شنبه 22 مرداد 1394, 14:11 عصر
سلام
من میخوام برنامه ای بنویسم که از طریق اندروید کیبورد کامپیوتر رو کنترل کنم.یعنی مثلا تو برنامم یه دکمه ای بزارم که هرموقع روی اون دکمه کلیک شد کلید x توی کامپیوتر زده بشه.....اگه کسی وارده لطفا کمکم کنه خیلی کارم گیره....
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.