رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

درود بر دوستان عزیزقبلا به من کدی دادید که مربوط به برنامه مکالمه با وای فای بود که من باید اول خود کد رو تست میکردم تا ببینم درسته بعدتغییرش میدادم پس کدو نوشتم که به این صورت شد اول ما یه دکمه send و ریسیو و stop و یه ادیت تکست توی یه فایل xml داریم بعد دوتا اکتیویتی داریم که تو فایل جاوای هریک این کدا رو داریم

این کد اول مربوط به اکتیویتی فرستادن صدا هست 

[shcode=java]import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.UnknownHostException;

import android.app.Activity;

import android.media.AudioFormat;

import android.media.AudioRecord;

import android.media.MediaRecorder;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class VoiceSenderActivity extends Activity {

private EditText target;

private Button startButton,stopButton;

public byte[] buffer;

public static DatagramSocket socket;

private int port=50005;         //which port??

AudioRecord recorder;

//Audio Configuration. 

private int sampleRate = 8000;      //How much will be ideal?

private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;    

private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;       

private boolean status = true;

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    target = (EditText) findViewById (R.id.target_IP);

    startButton = (Button) findViewById (R.id.start_button);

    stopButton = (Button) findViewById (R.id.stop_button);

    startButton.setOnClickListener (startListener);

    stopButton.setOnClickListener (stopListener);

}

private final OnClickListener stopListener = new OnClickListener() {

    @Override

    public void onClick(View arg0) {

                status = false;

                recorder.release();

                Log.d("VS","Recorder released");

    }

};

private final OnClickListener startListener = new OnClickListener() {

    @Override

    public void onClick(View arg0) {

                status = true;

                startStreaming();           

    }

};

public void startStreaming() {

    Thread streamThread = new Thread(new Runnable() {

        @Override

        public void run() {

            try {

                int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);

                DatagramSocket socket = new DatagramSocket();

                Log.d("VS", "Socket Created");

                byte[] buffer = new byte[minBufSize];

                Log.d("VS","Buffer created of size " + minBufSize);

                DatagramPacket packet;

                final InetAddress destination = InetAddress.getByName(target.getText().toString());

                Log.d("VS", "Address retrieved");

                recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,audioFormat,minBufSize);

                Log.d("VS", "Recorder initialized");

                recorder.startRecording();

                while(status == true) {

                    //reading data from MIC into buffer

                    minBufSize = recorder.read(buffer, 0, buffer.length);

                    //putting buffer in the packet

                    packet = new DatagramPacket (buffer,buffer.length,destination,port);

                    socket.send(packet);

                }

            } catch(UnknownHostException e) {

                Log.e("VS", "UnknownHostException");

            } catch (IOException e) {

                Log.e("VS", "IOException");

            } 

        }

    });

    streamThread.start();

 }

 }

[/shcode]

و این هم اکتیویتی دریافت صدا

[shcode=java]import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketException;

import android.app.Activity;

import android.media.AudioFormat;

import android.media.AudioManager;

import android.media.AudioRecord;

import android.media.AudioTrack;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class VoiceReceiverActivity extends Activity {

private Button receiveButton,stopButton;

public static DatagramSocket socket;

private AudioTrack speaker;

//Audio Configuration. 

private int sampleRate = 8000;      //How much will be ideal?

private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;    

private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;       

private boolean status = true;

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    receiveButton = (Button) findViewById (R.id.receive_button);

    stopButton = (Button) findViewById (R.id.stop_button);

    receiveButton.setOnClickListener(receiveListener);

    stopButton.setOnClickListener(stopListener);

}

private final OnClickListener stopListener = new OnClickListener() {

    @Override

    public void onClick(View v) {

        status = false;

        speaker.release();

        Log.d("VR","Speaker released");

    }

};

private final OnClickListener receiveListener = new OnClickListener() {

    @Override

    public void onClick(View arg0) {

        status = true;

        startReceiving();

    }

};

public void startReceiving() {

    Thread receiveThread = new Thread (new Runnable() {

        @Override

        public void run() {

            try {

                DatagramSocket socket = new DatagramSocket(50005);

                Log.d("VR", "Socket Created");

                byte[] buffer = new byte[256];

                //minimum buffer size. need to be careful. might cause problems. try setting manually if any problems faced

                int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);

                speaker = new AudioTrack(AudioManager.STREAM_MUSIC,sampleRate,channelConfig,audioFormat,minBufSize,AudioTrack.MODE_STREAM);

                speaker.play();

                while(status == true) {

                    try {

                        DatagramPacket packet = new DatagramPacket(buffer,buffer.length);

                        socket.receive(packet);

                        Log.d("VR", "Packet Received");

                        //reading content from packet

                        buffer=packet.getData();

                        Log.d("VR", "Packet data read into buffer");

                        //sending data to the Audiotrack obj i.e. speaker

                        speaker.write(buffer, 0, minBufSize);

                        Log.d("VR", "Writing buffer content to speaker");

                    } catch(IOException e) {

                        Log.e("VR","IOException");

                    }

                }

            } catch (SocketException e) {

                Log.e("VR", "SocketException");

            }

        }

    });

    receiveThread.start();

}

}

[/shcode]

اگر کد ها واضح نیست توی این لینکم هست

http://stackoverflow.com/questions/92383...-over-wifi

برنامه هیچگونه ارور و مشکلی نداره و حتی اجرا هم میشه اما وقتی روی دکمه استارت برنامه میزنم هیچگونه اتفاقی نمی افته و برنامه هیچ کار خاصی نمیکنه حتی هیچ پیغامی هم نمایش نمیده

از شما خواهش میکنم یه نگاه به کد بندازید و ببینید چرا برنامه هیچ کاری نمیکنه من خودم به کد نگاه کردم ضاهرا هیچ مشکل نداره:huh:

در ضمن اگر برنامه پرمیژن خاصی میخواد هم بهم بگید

خیلی ممنون میشم کمکم کنید:shy:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

نه نمیدونم چه پرمیژنی میخواد توی خود اون سایتم چیزی نگفته خودمم فکر کنم به همین خاطره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بسته به دسترسی هایی که به برنامه جهت دسترسی به منابع میدهید ممکن است این مجوز ها را نیاز داشته باشد::

[align=left]



[/align]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود بر دوستان گرامی

دوستان این برنامه وقتی روی دکمه استارتش میزنم توی قسمت پایین این پیغامو میده اگه میشه نسبت به کد بررسی کنید و به من بگید این پیغام یعنی چی تا من بدونم کجای برنامه مشکل داره

طبق این عکس

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

try catch معمولا برای همچین مواقعی به کار میره !! یعنی اگر برنامه ارور داشت وارد catch میشه عملی که داخل catch نوشته شده رو اجرا میکنه !!

شما جای Log.e توست بنویسید قطعا داخل برنامه توست نشون داده میشه !!

و اما مشکل برنامه !!

کد شما اصلا مشخص نیست ولی قطعا کدهاتون مشکل داره !!

لطفا کد رو قرار بدید تا بررسی بشه ببینیم چشه :)

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان لطفا کمک کنیدتوی این برنامه وقتی ترد با دکمه استارت فعال میشه باید این پیغام هایی که توی عکس با رنگ قرمز مشخص کردمو یکی یکی توی پنجره logcat نمایش بده اما یه راست میره آخر ترد و اون پیغامو که با آبی مشخص کردمو نمایش میده ضاهرا قبل ترد مشکلی وجود نداره و ترد هم ران میشه اما خطایی داره که این پیغامو نمایش میده تمام کدها موجوده لطفا بررسی کنید و بگید این شرط که توی catch نوشته شده یعنی چی و نشونگر چه خطایی هست که رخ میده و این پیغامو نمایش میده؟

اینم عکس از کد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این یک اکسپشن از نوع آی او یا ورودی خروجی است.

یعنی اینکه موقعی که شما دارید رکوردر یا ساکت را مقدار دهی می کنید ارور رخ داده و اجرای ادامه کد منتفی و این اکسپشن توسط کش هندلینگ می شود.

ترای کش جز بخش مدیریت استثنائات زبان جاوا است و مدیریت استثنات در همه زبان های برنامه سطح بالا وجودد دارد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بسیار تشکر از شما دوست عزیز خیلی کمکم کردید:heart:

پس با این اوصاف که شما فرمودید و خطا از ورودی و خروجی رخ داده در خط اول کد ترد ما که سه مقدار samplerate و cahannleconfing و audioformat v رو برنامه ما در ترد بگیره و در متغیر minbuffersize بریزه با یکی از این مقدار مشکل داره و در نتیجه در همون خط اول ارور میده و حتی پیغام اول که socketcreated هست رو نمایش نمیده و به همین خاطر برنامه ما در همون خط اول ترد خطا داره درست میگم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درسته.شما باید چک کنید شاید سوکت پذیرنده اصلن اماده اکسپت کردن نیست شاید هم اشتباه سوکتتان مقدار دهی می کنید و ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود بر شما

ممنون حالا من میرم متغیر ها رو یکی یکی چک میکنم ببینم دارای مقدار هست یا نه و اگه مشکل داشتم باز ازتون کمک میگیرم:D

درمورد سوکت میشه بیشتر برای من توضیح بدید مثل اینکه شما اطلاع دارید اما من اطلاع زیادی ندارم اگه در مورد سوکت پذیرنده و کلا سوکت یه توضیح برای من بدید و راجب کاربرد سوکت توی این برنامه هم توضیح بدید بسیار ممنون میشم:shy:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...