Articles of java的

如何避免BroadcastReceiver泄漏

我正在构建一个库,它具有以下结构: MySDK{ public static void init(Context context){ registerReceivers(); // Register connectivity BroadcastReceiver here } public static void performAction(){}; } 预期用途是:我的库用户在他们创建的第一个Activity中调用init() 。 问题是我没有取消注册BroadcastReceiver ,并且当app关闭时它会泄漏。 我可以创建一个名为deinit()的方法,并要求lib的用户在离开Activity时调用它,但是有更可靠的方式来释放资源吗? 为什么我需要接收器? 如果没有Internet连接且performAction()无法发送数据,我会注册接收器以检测连接状态的变化。

使用AWS开发工具包将文件上载到S3

我正在尝试使用AWS SDK将文件上传到Amazon S3存储桶。 class LogToS3Bucket extends Thread{ public void run() { super.run(); Gdx.app.log(“msg”, “secondThreadRunning yeahhhhh!”); File fileToPut = new File(“../../../MyProject”, “settings.txt”); String accessKey = “”; String secretKey = “”; AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonS3 conn = new AmazonS3Client(credentials); conn.putObject(“bucketname”, “filename.txt”, fileToPut); } } 它不起作用,它会在调用.putObject()时抛出错误 Exception in thread “Thread-1” Status Code: 400, AWS Service: […]

如何使用datainputstream从套接字读取

我可以显示收到的单个图像,但现在我想在我的磁盘上接收和写入多个图像,这些图像将在每5秒后从Android客户端发送一次。 Socket sock = servsock.accept(); dataInputStream = new DataInputStream(sock.getInputStream()); dataOutputStream = new DataOutputStream(sock.getOutputStream()); System.out.println(“Accepted connection : ” + sock); dataInputStream = new DataInputStream(sock.getInputStream()); byte[] base64=dataInputStream.readUTF().getBytes(); byte[] arr=Base64.decodeBase64(base64); FileOutputStream imageOutFile = new FileOutputStream(“E:\\image.jpeg”); imageOutFile.write(arr);

位图到大错误是抱怨图像大小的两倍

我收到臭名昭着的OpenGLRenderer错误”Bitmap too large to be uploaded into a texture.” 我对错误很熟悉并且知道我需要将图像保持在2048 pixels以下以避免它。 然而,在一款特定的手机上,三星Galaxy Nexus报告的图像尺寸是实际图像尺寸的两倍。 我的图片位于drawable文件夹中,大小为2048×95 。 当我运行应用程序并尝试将该图像添加到显示器时,我得到了臭名昭着的错误: 位图太大而无法上传到纹理中(4096×190,max = 2048×2048) 是什么赋予了?

Android谷歌地图:将scrollBy与zoomBy结合使用,可同时进行平移和缩放

我想同时缩放和滚动GoogleMap对象。 不幸的是,似乎我只是进行两次moveCamera调用(一个接一个),只有第二个调用才会生效。 另一种方法是传递一个CameraPosition ,但不幸的是,它看起来像CameraPosition构造函数没有接受一个处理滚动量的参数(这对于缩放级别是不变的),而只是一个关于什么lat / lon的参数要去。 是否有一些聪明的方法来组合/连接CameraUpdate对象,所以我可以发出一个同时执行平移和缩放的moveCamera命令? 我认为这样的事情是可能的,因为你可以在触摸地图时这样做。 你放下两根手指,你可以通过伸展你的手指和平移来放大/缩小它们同时移动它们。

我在哪里可以看到Android Studio中的打印堆栈跟踪?

我是Android Studio和Java编程的新手。 我有以下草案代码: try { InetAddress serverAddr = InetAddress.getByName(“whatever”); Socket socket = new Socket(serverAddr, 5555); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Socket抛出IOExceptiontypes的exception,因此将调用e.printStackTrace()。 在调试器下运行时,我在Android Studio中找不到打印此堆栈跟踪的位置/窗口。 我想这必须在Android Studio的控制台窗口中打印,但那里没有打印。 Android Studio 1.3.2,默认设置。 那么这个堆栈轨迹在哪里打印出来? 提前致谢!

libGDX:为棋盘游戏创建网格

我正在尝试使用libGDX创建一个简单的棋盘游戏。 只是你对我想要做的事情有一个粗略的想法,想象一下Bejeweled(虽然我当然不那么复杂)。 游戏涉及一个单元格为正方形的棋盘。 根据级别,此网格具有不同数量的单元格,如6×6或8×8。 我还想要包含一些漂亮的animation来切换两个相邻单元格的位置(比如Bejeweled)。 当然还需要在屏幕上显示一些按钮。 我的问题是:最好的方法是什么? 我应该使用一个舞台,然后使用表格作为网格吗? 那么我还可以轻松制作animation(使用通用补间引擎)吗? 或者单独绘制精灵更好? 还是有另一种完全不同的方法来接近这个? 谢谢您的回答, 干杯, 托尼

YouTube API 3上传video – 未配置访问权限 – Android

我正在开发一款能够录制video的Android应用,并允许用户使用YouTube Data API v3将其直接上传到YouTube。 我在Google的API控制台中设置了我的应用。 在服务项下,我启用了YouTube Data API v3。 在API访问下,我有“安装的应用程序的客户端ID”部分(包括客户端ID和客户端密钥)和“简单API访问”部分 – >“Android应用程序密钥(带证书)”(包括API密钥)和一个“Android应用程序”部分,暂时留空,即允许所有Android应用程序,但我已经尝试设置我的Android密钥)。 我的代码来自很多地方,主要是: https://developers.google.com/youtube/v3/code_samples/java#upload_a_video 和 https://code.google.com/p/google-api-java-client/source/browse/tasks-android-sample/src/main/java/com/google/api/services/samples/tasks/android/ TasksSample.java?repo=samples 上传初始化OK,启动AsyncTask,但后来我抛出一个IOException: { “code”: 403, “errors”: [ { “domain”: “usageLimits”, “message”: “Access Not Configured”, “reason”: “accessNotConfigured” } ], “message”: “Access Not Configured” } 类似的SOpost表明它与我的Google API控制台设置有关,但我找不到任何错误。 有什么建议么? 我想知道是不是因为我没有在任何地方提供我的客户ID或秘密…… 谢谢。 我的代码从包含video列表的片段运行。 相关部分是: – 在里面 public class UploadFragment extends Fragment { private […]

将对象转换为Parcelable超类的子类?

好的,所以我有一个可以SomeClass的类SomeClass 。 它有一个名为SuperClass的另一个SuperClass类的数组。 在我的SomeClass构造函数中,我试图将SuperClass对象的数组读入myArray实例variables。 这很简单; 然而: SuperClass有两个子类FirstSubClass和SecondSubClass 。 数组temp应该是所有3的混合,但由于某种原因它只有SuperClass对象( if和else if语句似乎没有执行,因为temp的所有元素都不是子类的实例)。 public SomeClass(Parcel in) { myArray = new SuperClass[100]; // this is probably where the problem is due to the classloader parameter: Object[] temp = in.readArray(SuperClass.class.getClassLoader()); for(int i = 0; i < myArray.length; i++) { if(temp[i] instanceof FirstSubClass) myArray[i] = (FirstSubClass) temp[i]; else if(temp[i] instanceof […]

Android:从文件中旋转并显示图像

我有一个非常简单的布局与ImageView。 我的应用程序打开相机,保存图像,然后使用BitmapFactory.decodeFile在ImageView中显示图像。 唯一的问题是它是旋转的。 我理解a)这是由于手机的相机默认为横向,所以这需要在代码中处理,b)image processing必须在与UI的单独线程中完成。 Android培训文档似乎适用于从资源ID而不是文件路径加载图像。 这只会让事情变得棘手,因为我能够按照教程进行操作,但最终难以协调差异。 我当然是新手,所以如果有人能够给我一个高层次的概述,为了实现这一目标需要做些什么,我真的很感激。 以下代码是我正在将位图添加到ImageView的位置。 我假设我对单独线程的调用将进入onCreate ? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_image); Bitmap bm = BitmapFactory.decodeFile(MainActivity.image_path); displayImageView = (ImageView) findViewById(R.id.myImageView); displayImageView.setImageBitmap(bm); }