小编jpm*_*ind的帖子

使用蓝牙将两个Android设备与第三个设备配对

我正在做一个Android应用程序,我需要2台或更多设备才能通过蓝牙连接到一台设备.以对等形式将两个设备连接在一起的代码有效,但是当我尝试连接另一个时,我得到一个IOException,说"连接被拒绝",因为Socket已关闭,因此无法完成配对.错误如下所示.

Socket closed. Unable to complete pairing.
java.io.IOException: Connection refused
    at android.bluetooth.BluetoothSocket.connectNative(Native Method)
    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:216)
    at com.ablueworld.androidgridcomputingframework.BluetoothManager$ConnectAsyncTask.doInBackground(BluetoothManager.java:270)
    at com.ablueworld.androidgridcomputingframework.BluetoothManager$ConnectAsyncTask.doInBackground(BluetoothManager.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:264)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    at java.lang.Thread.run(Thread.java:856)
Could not connect to this device
Run Code Online (Sandbox Code Playgroud)

我已经读过它需要为每个连接提供不同的UUID,是吗?无论如何,我已经编写了如下所示的代码,为每个新连接从数组中获取不同的UUID.

    // Unique UUID for this application
    private static int indexUUID = 0;
    private static final UUID[] MY_UUID_SECURE = {UUID.fromString("98b97e6b-62ff-4a36-a81b-82256fd1d168"),
                                                  UUID.fromString("98b97e6b-62ff-4a36-a81b-82256fd1d169"),
                                                  UUID.fromString("98b97e6b-62ff-4a36-a81b-82256fd1d170"),
                                                  UUID.fromString("98b97e6b-62ff-4a36-a81b-82256fd1d171"),
                                                  UUID.fromString("98b97e6b-62ff-4a36-a81b-82256fd1d172")};
    private static final String NAME_SECURE = "GridFrameworkSecure";

    /**
     * Method to connect securely to Bluetooth device using it's MAC …
Run Code Online (Sandbox Code Playgroud)

android bluetooth ioexception

5
推荐指数
1
解决办法
1229
查看次数

将位图保存到SD卡

我有一个Bitmap图像,我必须存储在SD卡的文件夹中,我的代码如下所示.它按预期创建文件夹和文件,但图像没有存储到文件中,它仍然是一个空文件...任何人都可以告诉我什么是错的?

Bitmap merged = Bitmap.createBitmap(mDragLayer.getChildAt(0).getWidth(), mDragLayer.getChildAt(0).getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(merged);

// save to folder in sd card
try {
    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "folder");
    if(!imagesFolder.exists())
        imagesFolder.mkdirs();
    int imageNum;
    if(imagesFolder.list()==null)
        imageNum = 1;
    else
        imageNum = imagesFolder.list().length + 1;

    String fileName = "file_" + String.valueOf(imageNum) + ".jpg";
    File output = new File(imagesFolder, fileName);
    while(output.exists()){
        imageNum++;
        fileName = "file_" + String.valueOf(imageNum) + ".jpg";
        output = new File(imagesFolder, fileName);
    }

    OutputStream fOut = new FileOutputStream(output);
    merged.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
    fOut.flush();
    fOut.close(); …
Run Code Online (Sandbox Code Playgroud)

android outputstream bitmap fileoutputstream

4
推荐指数
3
解决办法
1万
查看次数

ImageView上的TranslateAnimation(Android)

所以我的布局中有一个ImageView,当用户滑过后者时我想向右或向左滑动它.我使用TranslateAnimation来翻译ImageView,如下所示.

ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);

Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);
Run Code Online (Sandbox Code Playgroud)

我已将此代码放在我的"向右滑动"部分,并使用相同的代码但使用getLeft() - 150用于"向左滑动"部分.当我第一次滑动时,它按预期工作,但当我向另一个方向滑动时,ImageView返回到其原始位置,然后向另一个方向滑动,而不是仅滑动到原始位置.

我已经尝试在AnimationListener的onAnimationEnd方法中添加以下内容,我将其设置为动画,但是徒劳无功.

MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下相同的方法,但是这两种方法都没有按预期工作.

((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();
Run Code Online (Sandbox Code Playgroud)

有人请帮帮我吗?即使使用了setFillAfter(true)和setFillEnabled(true),动画后的位置似乎也没有变化.有没有使用TranslateAnimation的替代方案?

谢谢你的帮助.:)

android position imageview android-animation translate-animation

3
推荐指数
1
解决办法
9462
查看次数