2017-09-16 44 views
0

我想在我的遊戲中libgdx中顯示用戶配置文件圖標。在代碼的android方面,我可以得到使用mParticipants.get(i).getIconImageUri()的玩家的圖像uri,這給了我Uri。但是我找不到將Uri轉換爲紋理的方法,我可以在我的libgdx代碼中使用它。從谷歌獲取紋理玩遊戲服務圖標在Libgdx的Uri

我第一次嘗試使用的代碼

Bitmap bitmap = null; 
    try { 
     InputStream inputStream = application.getContentResolver().openInputStream(imgUri); 
     bitmap = BitmapFactory.decodeStream(inputStream); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

從烏里得到位圖不過這給了我一個安全錯誤。

對谷歌其他答案顯示我的方式,其中包括所有顯示在Android的ImageView圖像的方式,但我需要一個紋理,我可以在我的libgdx遊戲中使用,以顯示圖像

我也有嘗試添加以下權限,我的清單

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

即使然後我仍然收到安全錯誤。請幫我解決這個問題

+1

安全異常可能是由於你使用targetSDK> = 23,即所需的運行權限危險權限。 – Aryan

+0

位圖??如何在覈心模塊中使用,也許你可以通過連接到核心模塊從android獲取字符串,然後從鏈接地址獲取紋理數據,然後將數據保存在本地文件處理程序中,並從本地文件中獲取該數據並填充到項目中。 – Aryan

+0

@AbhishekAryan位圖可以很容易地轉換爲libgdx紋理,然後可以在覈心模塊中使用**新紋理(bitmap.getWidth(),bitmap.getHeight(),Pixmap.Format.RGBA8888)** 用於獲取http url已被棄用 –

回答

0

經過大量的研究,在我看來,它是不可能通過讀取Uri的輸入流來獲取位圖。要做到這一點的唯一方法是使用ImageManager

的示例代碼實現這一目標是:

private void SetUserIconForPlayer(final Player player, Uri uri) 
{ 
    ImageManager mgr = ImageManager.create(application); 
    mgr.loadImage(new ImageManager.OnImageLoadedListener() { 
     @Override 
     public void onImageLoaded(Uri uri,final Drawable drawable, boolean isRequestedDrawable) { 
      if(isRequestedDrawable) 
      { 
       Gdx.app.postRunnable(new Runnable() { 
        @Override 
        public void run() { 
         player.SetUserIcon(GetTextureFromDrawable(drawable)); 
        } 
       }); 
      } 
     } 
    }, uri); 
} 
相關問題