Android 如何将值从视图对象(SeekBar)发送到正在运行的后台线程?

Android 如何将值从视图对象(SeekBar)发送到正在运行的后台线程?,android,android-asynctask,Android,Android Asynctask,我正在开发一个客户机-服务器应用程序。 客户端是android。 服务器是我的电脑。 服务器向客户端发送字节数组,客户端从字节数组生成图像,并通过ImageView逐帧显示它们 我使用AsyncTask打开服务器的套接字并构建映像。到目前为止,一切正常 现在,我想添加SeekBar以更改图像的亮度 我的问题是如何将seekbar值发送到构建图像的函数 检查以下示例以更改图像的亮度 图像亮度可以通过同时增加/减少R、G、B值来改变 我想你可以有一个包装类,它将保存seekbar值和位图。你可以通过

我正在开发一个客户机-服务器应用程序。 客户端是android。 服务器是我的电脑。 服务器向客户端发送字节数组,客户端从字节数组生成图像,并通过ImageView逐帧显示它们

我使用AsyncTask打开服务器的套接字并构建映像。到目前为止,一切正常

现在,我想添加SeekBar以更改图像的亮度

我的问题是如何将seekbar值发送到构建图像的函数


检查以下示例以更改图像的亮度

图像亮度可以通过同时增加/减少R、G、B值来改变


我想你可以有一个包装类,它将保存seekbar值和位图。你可以通过串行化这个类通过套接字发送。我想通过android更改图像的亮度,在我将像素放入颜色阵列之前检查这个-我知道如何更改亮度,我不知道如何将SeekBar的值传递给函数TcpClient.run我需要的是每次更改SeekBar时向AsyncTask发送消息请帮助
public void onClickConnect(View view)
{
    // connect to the server
    new ConnectTask().execute("");
}

public class ConnectTask extends AsyncTask<String, Bitmap, TcpClient> {

    @Override
    protected TcpClient doInBackground(String... message)
    {
        //we create a TCPClient object and
        mTcpClient = new TcpClient(new TcpClient.OnBitmapReceived() {
            @Override
            public void bitmapReceived(Bitmap bitmap) {
                //this method calls the onProgressUpdate
                publishProgress(bitmap);
            }
        });
        mTcpClient.run();
        return null;
    }

    @Override
    protected void onProgressUpdate(Bitmap... bitmap) {
        super.onProgressUpdate(bitmap); 

        //iv is the ImageView object that display the images
        iv.setImageBitmap(bitmap[0]);
    }
}

public class TcpClient {    
    private OnBitmapReceived mBitmapListener = null;    
    public TcpClient(OnBitmapReceived listener) {
        mBitmapListener = listener;
    }   
    public void run() {     
    mRun = true;        
    //creating a socket to make the connection with the server
    .....       
    while (mRun){           
        .....   
        //build color array
        **// HERE I NEED THE VALUE FROM THE SEEK BAR**          
        for(int i=0;i<bytePerFrame;i=i+2)                   
            {
                pixel = ((frameBytes[i] << 8) & 0x0000ff00) | (frameBytes[i+1] & 0x000000ff);
                colors[pixelIndex]=pixel;
                pixelIndex++;
            }                   
        Bitmap mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        Canvas c = new Canvas(mBitmap);
        Paint paint = new Paint();  
        c.drawBitmap(colors, 0, width, 0, 0, width, height, false, paint);          
        if(mBitmap!=null && mBitmapListener != null)
            {
                    mBitmapListener.bitmapReceived(mBitmap);
            }               
        }       
    }
}