小编Mr *_*orn的帖子

Android SDK Mediaplayer.create随机返回null

我有一个问题,偶尔MediaPlayer.create方法将返回null,即使音频文件肯定存在.实际上,如果我将调用create创建为while循环,最终将成功创建媒体播放器.这似乎只发生在我的手机上(HTC Hero运行2.1)而且从未出现在模拟器中.

这只是手机的问题吗?或者我应该以不同的方式播放这些音频文件?

请注意,我想动态加载它们,这是因为我正在调用getIndentifer.如果有更好的方式来动态播放这些,请告诉我.

public void playAudio(String audioFile){

    //instance variable of type MediaPlayer
    _player = null;
    while(_player == null){
         _player = MediaPlayer.create(_context, getResources().getIdentifier(audioFile, "raw", _context.getPackageName()));
    }
    _player.start();

}
Run Code Online (Sandbox Code Playgroud)


谢谢.

media android

12
推荐指数
1
解决办法
2153
查看次数

Android状态栏通知 - 选择通知时打开正确的活动

单击时,我一直遇到通知无法打开/转到正确活动的问题.

我的通知代码(位于扩展服务的类中):

Context context = getApplicationContext();

    CharSequence contentTitle = "Notification";

    CharSequence contentText = "New Notification";

    final Notification notifyDetails =
        new Notification(R.drawable.icon, "Consider yourself notified", System.currentTimeMillis());

    Intent notifyIntent = new Intent(context, MainActivity.class);

    PendingIntent intent =
          PendingIntent.getActivity(context, 0,
          notifyIntent,  PendingIntent.FLAG_UPDATE_CURRENT | Notification.FLAG_AUTO_CANCEL);

    notifyDetails.setLatestEventInfo(context, contentTitle, contentText, intent);

    ((NotificationManager)getSystemService(NOTIFICATION_SERVICE)).notify(NOTIFICATION_ID, notifyDetails);
Run Code Online (Sandbox Code Playgroud)

如果在创建服务的应用程序打开时单击通知,通知将消失(由于FLAG_AUTO_CANCEL),但活动未切换.

如果我从主屏幕点击通知,通知将消失,我的应用程序将被带到前面,但是它仍然在进入主屏幕之前打开的活动,而不是进入主屏幕.

我究竟做错了什么?如何指定将被提取的活动?

notifications android android-activity

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

Java - 使用PreparedStatement在mysql数据库中存储UTF-8字符(特别是俄语字符)

使用准备好的语句我试图将俄语字符存储在特定表的字段中.表和字段使用utf8字符集和utf8_bin排序规则.

如果我通过IDE或命令行手动运行插入,则字符串将按预期保存.

INSERT INTO utf8Table VALUES('???????? ?????????');
Run Code Online (Sandbox Code Playgroud)

然后,我可以查询该表,并且还可以返回预期的String.

通过tomcat的context.xml文件中的资源设置Connection,其中包含以下配置:

<Resource 
    name="jdbc/DoolliDB"  
        auth="Container"   
        type="javax.sql.DataSource"   
        driverClassName="com.mysql.jdbc.Driver"
        useUnicode="true"
        characterEncoding="UTF8"
        ....
</Resource>
Run Code Online (Sandbox Code Playgroud)

正如我所说,我能够很好地读取字符串/字符,所以我假设表和连接设置都正确设置.

我通过以下方式使用PreparedStatement/CallableStatement:

CallableStatement callableStmt = __mySqlConnector.getConnection().prepareCall("INSERT INTO utf8Table VALUES(?)");

callableStmt.setString(1, "???????? ?????????");

callableStmt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

什么是插入数据库而不是АнатолийСолоницын:???????? ?????????

另请注意,"普通"utf-8字符串(如über)正在正确保存.

System.getProperty("file.encoding") 
Run Code Online (Sandbox Code Playgroud)

java.nio.charset.Charset.defaultCharset().name() 
Run Code Online (Sandbox Code Playgroud)

也都返回UTF-8.

任何帮助表示赞赏.谢谢

java mysql jdbc utf-8

6
推荐指数
1
解决办法
4900
查看次数

JDBC从重复插入生成密钥

如果你有一个带有ON DUPLICATE KEY子句的插入,并且有一个重复的键,有没有办法找回重复的主键?或者我是否必须自己进行手动查询?据我所知,来自CallableStatement类的getGeneratedKeys()不会返回,因为实际上没有完成新的插入.

编辑对不起,如果不清楚,但我想得到记录的主要关键.

所以,如果我有下表(借口语法,只是徒手打字):

CREATE TABLE some_table(
  id int(11) unsigned NOT NULL AUTO_INCREMENT,
  value varchar(500)NOT NULL,
  count int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (id),
  UNIQUE KEY (value)
);

INSERT INTO some_table(value) ON DUPLICATE KEY UPDATE count = count + 1;
Run Code Online (Sandbox Code Playgroud)

如果我要添加'test'作为值,则会添加一条新记录,并且getGeneratedKeys()将返回id;

如果我再次尝试添加"test",则密钥已经存在,因此计数将会更新.我想要的是更新的那一行的主键/ id.我是否必须看到getGeneratedKeys()没有得到任何结果 - 因为没有生成的结果 - 并在事后做了另一个选择?

java mysql jdbc

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

标签 统计

android ×2

java ×2

jdbc ×2

mysql ×2

android-activity ×1

media ×1

notifications ×1

utf-8 ×1