我有一个Android应用程序推出市场超过6个月, geocoder.getFromLocation()用于"翻译" latitude和longitude人类可读的地址:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到7小时前(2016-01-15 04:00 UTC).使用Google支持并根据他们的建议,在此处发布问题,看看是否有人有任何想法来解决此问题.
我已经与Maps API的工程团队进行了交谈,似乎Android Geocoder使用的是与我们支持的Geocoding API不同的后端,因此我们现在无法做多少.
此外...
我编写了自己的MediaPlayer类来播放特定路径中的文件并播放assets文件夹中的文件.这是班级:
public class CMediaPlayer extends MediaPlayer{
public void play(String audioPath){
this.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
File f = new File(audioPath);
if(f.exists()){
try{
FileInputStream fis = new FileInputStream(f);
FileDescriptor fileD = fis.getFD();
this.setDataSource(fileD);
this.prepare();
}catch(IOException e){
}
this.start();
}
}
public void play(AssetFileDescriptor descriptor){
this.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
try {
this.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
this.prepare();
}catch (IOException e){
}
this.start();
}
}
Run Code Online (Sandbox Code Playgroud)
我想从一个活动中播放该类的几个声音.这是我的代码:
public class playGame …Run Code Online (Sandbox Code Playgroud) 当前情景
我的应用主页包含导航抽屉,因此我将视图加载为片段.我在工具栏中也有搜索图标.我在menu.xml中实现了它.下一步我SearchView通过以下问题的答案实现搜索图标
在工具栏中实现搜索.
这在搜索视图显示时工作正常,也可以被解雇.
问题
我可以为搜索视图实现搜索查询,但我无法理解如何继续.问题是,onCreateOptionsMenu在Activity和搜索视图中的所有代码都在Activity.我不明白的是必须搜索的数据Fragment是在Activity课堂上加载的.我将点击另一个Web服务来获取搜索结果,但我将如何Fragment再次对搜索到的数据进行通信.我无法理解如何在这种情况下继续前进.
我的应用程序需要具有使用权限访问权限才能获得有关用户手机上当前正在运行的应用程序的信息.我可以使用以下代码在以下链接的帮助下成功实现它.
这是我的工作代码
public void showDialog()
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
@SuppressWarnings("WrongConstant")
UsageStatsManager usm = (UsageStatsManager) getSystemService("usagestats");
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
time - 1000 * 1000, time);
if (appList.size()==0)
{
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("Usage Access")
.setMessage("App will not run without usage access permissions.")
.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void onClick(DialogInterface dialog, int which) {
// continue with delete
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
// intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$SecuritySettingsActivity"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent,0);
}
}) …Run Code Online (Sandbox Code Playgroud) 我的目标是让两个UI活动保持活动状态,并在它们之间来回切换,而不必杀死/重启其中任何一个.但是使用FLAG_ACTIVITY_REORDER_TO_FRONT执行此操作会产生严重的副作用:当我恢复上一个活动(当前正在后台运行)时,会失去窗口焦点.
我通过花费5分钟创建一个包含两个"Hello World"活动的简单应用程序来证明这个问题.
startActivity(FLAG_ACTIVITY_REORDER_TO_FRONT, ActivityB.class).startActivity(FLAG_ACTIVITY_REORDER_TO_FRONT, ActivityA.class).onResume()按预期调用,一切看起来都很好(我可以再次看到活动A内容).E/ActivityManager(513):原因:输入调度超时(等待,因为没有窗口有焦点,但有一个专注的应用程序,最终可能在完成启动时添加一个窗口.)
I/WindowState(513):WIN DEATH:Window {5294687c u0 com.android.launcher/com.android.launcher2.Launcher}
W/ViewRootImpl(8066):由于没有窗口焦点而丢弃事件:KeyEvent {action = ACTION_DOWN,keyCode = KEYCODE_BACK,scanCode = 0,metaState = 0,flags = 0xc8,repeatCount = 1,eventTime = 14965546,downTime = 14965045,deviceId = -1,source = 0x101}
(从用户的角度来看,窗口死亡的实际结果本质上是"崩溃" - Android会将用户从应用程序中抛回主屏幕,尽管技术上应用程序仍然在后台运行.)
我调试了这个并发现Activity A可见但没有焦点的原因是因为活动A的onWindowFocusChanged()没有像通常那样被调用(即使调用了onResume()). 这与活动B在后台仍处于活动状态的事实有关(即使B已经失去焦点 - 为B调用onWindowFocusChanged(false),以及onStop()). 我知道这是因为在上面的第4步之后,如果我立即调用活动B上的finish(),将调用活动A的onWindowFocusChanged(true)并且一切正常. 活动B仍然活跃但不集中的事实干扰了活动A重新获得焦点.这是一个Android错误还是我错过了什么?
请注意,如果活动A中有多个视图,并且我在上面的步骤6之后触摸其中一个视图,我会得到相同的"由于没有窗口焦点而丢弃事件"错误,尽管由于某种原因不是100%的时间.
-Android Studio 1.5.1,Java 1.7.0 amd64,Ubuntu 15.10
-instaled kotlin-plugin 1.0.0
创建空活动的新项目(API级别15)
-Tools-> Kotlin->在项目中配置Kotlin
-Default选项被选中,所有模块,Kotlin插件版本1.0.0
生成build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "kotlin.org.jjvr.kotlinapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '1.0.0'
repositories {
mavenCentral()
} …Run Code Online (Sandbox Code Playgroud) 我在尝试构建项目时遇到此错误.
Error:(3, 5) No resource found that matches the given name (at 'cardBackgroundColor' with value '?android:attr/colorBackgroundFloating').
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Home\AppData\Local\Android\sdk\build-tools\23.0.2\aapt.exe'' finished with non-zero exit value 1
Run Code Online (Sandbox Code Playgroud)
当我点击它时,它将带我到生成的文件夹的v-23值文件,其中包含以下代码.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CardView" parent="Base.CardView">
<item name="cardBackgroundColor">?android:attr/colorBackgroundFloating</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
这是我的app gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.xxxx"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算可以使用我的自定义相机拍摄的剩余照片数量,并向用户显示该数量.我尝试使用以下代码:
private void numberOfPhotosAvailable() {
long photosAvailable = 0;
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
resolution=getResolution();
long bytesPerPhoto=resolution/1048576;
long bytesAvailable = (long) stat.getAvailableBlocksLong() * (long) stat.getBlockSizeLong();
long megAvailable = bytesAvailable / 1048576;
System.out.println("Megs :" + megAvailable);
photosAvailable = megAvailable / bytesPerPhoto;
tvAvailablePhotos.setText("" + photosAvailable);
}
Run Code Online (Sandbox Code Playgroud)
获得解决方法.
public long getResolution(){
long resolution=0;
Camera.Parameters params=mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
int width=size.width;
int height=size.height;
resolution=width*height;
return resolution;
}
Run Code Online (Sandbox Code Playgroud)
问题: 手机摄像头显示的计数与我的应用程序中显示的计数有很大差异.
那么这样做的正确方法是什么?
注意:我只会以最高质量拍摄图像.因此我只根据一个分辨率计算计数.
导航抽屉有一个奇怪的问题.我使用Android Studio提供的默认模板创建了导航抽屉,并使用menu.xml文件创建了它.现在的问题是,每当我将图像添加到导航抽屉列表项时,尽管有任何彩色图像,它的颜色也会变为灰色.这是导航抽屉里的一张图片
正如您所看到的,图像的颜色是绿色,但是当添加到导航抽屉时,它看起来像 
我不知道是什么造成了这种情况
这是menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/clock"
android:title="Home" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/mega_event"
android:title="Mega Events" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/tickets"
android:title="My Tickets" />
<item
android:id="@+id/nav_manage"
android:icon="@drawable/profile"
android:title="Profile" />
<item
android:id="@+id/nav_settings"
android:icon="@drawable/settings"
android:title="Settings" />
<item
android:id="@+id/nav_logout"
android:icon="@drawable/logout"
android:title="Logout" />
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
这里第一个项目中的drawable是我发布的那个
和活动主题
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
Run Code Online (Sandbox Code Playgroud)
和导航抽屉活动类
public class ActivityNavigationDrawer extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 我使用了Maps V2 FragmentActivity,SupportMapFragment
但是现在我正试图让它工作不使用上面但是使用
MapView.地图文档似乎说你可以这样做.
该应用程序运行,但我只是得到一个黑屏,没有地图.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Java文件:
package com.jps.mapstestthree;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.LayoutInflater;
import android.content.Context;
import com.google.android.gms.maps.*;
import com.google.android.gms.maps.model.*;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
public class MainActivity extends Activity
implements OnMapReadyCallback
{
private GoogleMap googleMap;
private View view;
private MapView mapView;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
context = (Context)getApplication();
LayoutInflater inflater =(LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); …Run Code Online (Sandbox Code Playgroud)